0

getimagesizeWindows 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 が返され、2 回目にこの関数が呼び出されるとまったく返されません。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

2 回目の実行では、次の致命的なエラーがスローされます。 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

何らかの理由で、VistaおよびWindows 7では、localhost/127.0.0.1そのままでは機能しません。それを機能させるには、この行をc :\windows\system32\drivers\etc\hosts file:に追加する必要があります127.0.0.1 localhost

実際には、この行はホストファイルにありますが、コメントが付けられているため、コメントを外すことができます。getimage sizeローカルホストでも正常に動作しています。貴重なコメントやご提案ありがとうございます。

于 2012-07-10T04:39:10.493 に答える
1

まず、2 番目のエラーは、処理している情報が多すぎることを示しています (最大実行時間 120 秒を超えました)。デバッグ目的で、これを .xml で変更できますphp.ini

次に、投稿した最初のエラー メッセージに何か問題があります。(正しいかもしれませんが、とても間違っているように見えます。)同じ部分が繰り返されており、実際のエラー部分が欠落しています。

まず、$imageアクセスしようとしているファイルが とともに存在することfile_exists()、および現在の作業フォルダが と の組み合わせを持つ適切なフォルダであることをgetcwd()確認してくださいchdir()

phpinfo()また、設定の出力を確認する必要があります。関数 ( など) が特定のライブラリにあるgdため、必要なライブラリが不足している可能性があります。gdgetimagesize()

編集:

$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はローカルの保存パスです。

を使用して、ファイルのアップロード (ファイルのアップロードの HTML フォーム要素を使用する場合) が保存される場所ini_get('upload_tmp_dir')の構成を取得できます。php.iniLinux では 、/tmpXAMPPではになりますC:\xampp\tmp

したがって、たとえば、一時ファイルを保存するには、save_image($img, ini_get('upload_tmp_dir')."/".time() );. 現在のタイムスタンプで一時ファイルが保存され、後で簡単に削除できます。

于 2012-07-05T10:11:55.677 に答える