繁体   English   中英

getimagesize不能在Windows 7上运行,但它正在开发xp

[英]getimagesize is not working on windows 7 but it is working on xp

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()组合的正确文件夹。

您还需要检查您的gd设置的phpinfo()输出,可能是您缺少所需的库,因为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 file127.0.0.1 localhost

实际上你会在主机文件中找到这一行,但它被注释,所以你可以取消注释该行。 getimage size也适用于localhost。 感谢您的宝贵意见和建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM