0

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,第二次调用这个函数时它根本不返回。我检查了网址$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

4

2 回答 2

1

首先,第二个错误表明您正在处理太多信息(超过了 120 秒的最大执行时间)。出于调试目的,您可以在php.ini.

其次,您发布的第一条错误消息有问题。(这可能是对的,但看起来很错误。)相同的部分在其中重复,并且缺少真正的错误部分。

首先,确保$image您尝试访问的文件存在 和file_exists(),并且您当前的工作文件夹是正确的文件夹,并带有 和 的getcwd()组合chdir()

您还需要检查设置的phpinfo()输出gd,可能是您缺少所需的库,因为gd函数(如getimagesize())在该特定库中。

编辑:

我看到你提到这$image是一个 URL。小心,因为在这种情况下使用远程图像不是一个好方法。您应该始终检索所述图像文件的本地cURL副本(可能使用),然后在本地解析它。

使用下面的函数(source),您可以创建图像文件的本地副本:

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')检索php.ini文件上传的保存位置(当您使用文件上传的 HTML 表单元素时)的配置。在 Linux 上,它是/tmp,使用XAMPP,它将是C:\xampp\tmp.

因此,例如,要保存一个临时文件,您可以转到save_image($img, ini_get('upload_tmp_dir')."/".time() );. 它将使用当前时间戳保存一个临时文件,之后可以轻松删除该文件。

于 2012-07-05T10:11:55.677 回答
1

由于某种原因,在 Vista 和 Windows 7 中,localhost/127.0.0.1不能开箱即用。要使其正常工作,您必须将此行添加到 c :\windows\system32\drivers\etc\hosts file: 127.0.0.1 localhost

实际上,您会在主机文件中找到这一行,但它已被注释,因此您可以取消注释该行。getimage size在 localhost 上也可以正常工作。感谢您提出宝贵的意见和建议。

于 2012-07-10T04:39:10.493 回答