カテゴリー
everyday life

PHP5.3.6がらみ?

 本日,(たまたま)縦書き「清貧譚 (seihin.php)」にアクセスしたら,表示されなかった。
 Apacheのerror.logを見たら,
  file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0
が出ている。allow_url_fopen=Off のせいって,昨日のアップデート以前から「Off」だったジャンと思うんだが,PHP5.3.6にしたせいらしい。
 仕方がないので,といってもallow_url_fopen=Onにするわけにはいかないので,代わりにcURLを使ってみることにする。
 最新のcurl-7.21.4-devel-mingw32.zipを落としてきて,解凍。
 http://www.php.net/manual/ja/curl.installation.phpによると,「libeay32.dll および ssleay32.dll が PATH の通った場所に存在する必要があります。」ということなので,curl.exeとlibeay32.dllをC:PHPにコピーするともに,既に存在したssleay32.dllを最新版で上書きした。
 php.iniのextensionでextension=php_curl.dllをアンコメント。
 あと,清貧譚(seihin.php)の中のphpスクリプトをcURLで書き直す。こんな感じ。

<?php
        $url = "http://www.example.com/index.html";
        $ch = curl_init();
        curl_setopt ($ch, CURLOPT_TIMEOUT_MS,5000);   <---8/05追加
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $data = curl_exec($ch);
        curl_close($ch);
        $data = substr($data, 0, 100);
        $data = mb_convert_encoding($data, 'UTF-8', 'Shift_JIS');
        echo $data;
?>

 表示されるようになった。やれやれ。

追記(8/5):
 A secure rewrite of timthumb.php as WordThumb (魚拓です) を読んでて気になったので,上記にcurl_setopt ($curl, CURLOPT_TIMEOUT_MS,5000);を追加。PHP5.2.3未満,cURL7.16.2未満だと,CURLOPT_TIMEOUTじゃないと使えないだろう。value の適切な設定値が分からないので一応5秒に設定。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です