1

私のphpアプリには、file_get_contents()、file_put_contents、およびgetimagesize()の呼び出しを中継するいくつかの関数があります。

問題は、allow_url_fopenがphp.iniでallow_url_includeが無効になっていると、これらの重要な関数でエラーが発生することです。

警告:getimagesize()[function.getimagesize]:オンラインの/home/content/.../html/_sites/mysite/wp-content/themes/mytheme/functions.phpのサーバー構成でURLファイルアクセスが無効になっています2534

これらの問題を回避するためのオプションは何ですか?

編集:これらはすべて、呼び出し元のphpスクリプトと同じWebサーバー上のローカルファイルです。ファイルの内容を読み書きするための好ましい方法はありますか?

4

2 に答える 2

3

curlを使用してリモートページを取得できます。URLラッパーを使用してコンテンツをフェッチする代わりに、curlリクエストの結果を変数とecho()に保存できます。

理論的には、返されたデータをeval()することもできます。ただし、リモートでフェッチされたPHPコードを実行することは、セキュリティ上の大きなリスクです。この方法で含まれるPHPコードは、文字通り何でも実行できます。 しないでください!同じことがallow_url_includeにも当てはまります

于 2012-04-18T12:15:31.240 に答える
1

Webサーバーにアクセスできる場合は、次のようにphp.iniファイルを見つける必要があります。

/etc/php5/apache/php.ini

そして、これらのオプションを使用します。

; http://php.net/allow-url-fopen
allow_url_fopen = On

; http://php.net/allow-url-include
allow_url_include = Off

ホスティングアカウントの一部を使用している場合、これらのオプションはコントロールパネルでインタラクティブに利用できる場合があります。

2番目の解決策は、cURLを使用することです。URLを使用してgetimagesizeを呼び出そうとしていたと思います。ここのドキュメント:http://php.net/manual/en/book.curl.php

$ch = curl_init('http://example.com/image.php');
$fp = fopen('/my/folder/flower.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
于 2012-04-18T12:18:41.133 に答える