getimagesize
在Windows 7上不起作用,但它在XP上工作。当首先执行时,它返回FALSE
,当再次执行时,它不返回任何内容。
function ezImage($image,$pad = 5,$width = 0,$resize = 'full',$just = 'center',$border = ''){
...............
...............
...............
$imageInfo = @getimagesize($image);
if (!$imageInfo) {
//remove tempfile for remote images
if ($temp == true) unlink($image);
return false;
}
.............
.............
}
对于 Windows 7,首先当它进入 getimagesize
函数时,它返回 0,第二次调用此函数时,它根本不返回。我已经检查了 URL $image
,很好。如果我直接在浏览器中输入URL,它会立即显示图像。
第一次执行会引发以下警告消息:
Warning: getimagesize(http://localhost/metornet/metornet_chart_paxalarm.php?title=MetorNet+Statistics&names%5B%5D=03%2F07%2F12%0A08%3A48+-%0A03%2F07%2F12%0A08%3A49&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A49+-%0A03%2F07%2F12%0A08%3A50&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A50+-%0A03%2F07%2F12%0A08%3A51&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A51+-%0A03%2F07%2F12%0A08%3A52&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A52+-%0A03%2F07%2F12%0A08%3A53&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A53+-%0A03%2F07%2F12%0A08%3A54&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A54+-%0A03%2F07%2F12%0A08%3A55&pax%5B%5D=0&alarms%5B%5D=0&rates%5B%5D=0.0&names%5B%5D=03%2F07%2F12%0A08%3A55+-%0A03%2F07%2F12%0A08%3A56&pax%5B%5D=0&am in C:'Program Files'..'..'Includes'ros_pdf_class'class.ezpdf.php on line 1344
第二次执行会引发以下致命错误: Fatal error: Maximum execution time of 120 seconds exceeded in C:'Program Files'.. '..'Includes'ros_pdf_class'class.ezpdf.php on line 1344
首先,第二个错误表明您正在处理太多信息(超过120秒的最大执行时间)。出于调试目的,您可以在php.ini
中更改此设置。
其次,您发布的第一条错误消息有问题。(这可能是对的,但它看起来很不对劲。相同的部分在其中重复,并且缺少真正的错误部分。
首先,确保您尝试访问的$image
文件存在于 file_exists()
中,并且您当前的工作文件夹是结合了 getcwd()
和 chdir()
的正确文件夹。
您还需要检查phpinfo()
输出的gd
设置,可能是您缺少所需的库,因为gd
函数(如getimagesize()
)都在该特定库中。
编辑:
我看到你提到$image
是一个URL。请注意,因为在此上下文中使用远程映像不是一个好方法。您应该始终检索所述图像文件的本地副本(可能使用 cURL
),然后在本地解析它。
使用以下函数(源),您可以创建图像文件的本地副本:
function save_image($img, $fullpath)
{
$ch = curl_init($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close ($ch);
if(file_exists($fullpath)){
unlink($fullpath);
}
$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
fclose($fp);
}
$img
是图像的远程地址,$fullpath
是本地保存路径。
您可以使用ini_get('upload_tmp_dir')
检索文件上传保存位置(使用文件上传的 HTML 表单元素时)的php.ini
配置。在Linux上,它是/tmp
的,使用XAMPP,它将C:'xampp'tmp
。
因此,例如,要保存临时文件,您可以转到 save_image($img, ini_get('upload_tmp_dir')."/".time() );
.它将保存一个带有当前时间戳的临时文件,之后可以轻松删除该文件。
某种原因,在Vista和Windows 7中,localhost/127.0.0.1
不能开箱即用。要使其正常工作,您必须将此行添加到 c :'windows'system32'drivers'etc'hosts file
: 127.0.0.1 localhost
.
实际上,您会在主机文件中找到此行,但是它已注释,因此您可以取消注释该行。 getimage size
本地主机也可以正常工作。感谢您的宝贵意见和建议。