错误处理&解决方法allow_url_fopen和allow_url_include在服务器上被禁用

时间:2012-04-18 12:07:32

标签: php file-get-contents getimagesize

我的php应用程序中有几个函数可以转发对file_get_contents(),file_put_contents和getimagesize()的调用。

问题是当在php.ini中禁用allow_url_fopen allow_url_include时,我在这些关键函数上遇到错误。

  

警告:getimagesize()[function.getimagesize]:URL文件访问是   在服务器配置中禁用   /home/content/.../html/_sites/mysite/wp-content/themes/mytheme/functions.php   在第2534行

解决这些问题有哪些选择?

编辑:这些是与调用php脚本在同一个Web服务器上的所有本地文件。是否有读取/写入文件内容的首选方法?

2 个答案:

答案 0 :(得分:3)

您可以使用curl来获取远程页面。您可以将curl请求的结果存储到变量和echo(),而不是使用url包装器来获取内容。

理论上,您还可以eval()返回的数据。但是,运行远程获取的PHP代码是一种极大的安全风险,以这种方式包含的任何PHP代码都可以做任何事情。 不要这样做!同样适用于allow_url_include

答案 1 :(得分:1)

如果您有权访问您的网络服务器,您可能必须找到您的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

如果您使用托管帐户,可以在控制面板上以交互方式提供这些选项。

第二种解决方案可能是使用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);