本日,(たまたま)縦書き「清貧譚 (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秒に設定。