1

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

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

警告:getimagesize() [function.getimagesize]: URL file-access is disabled in server configuration in /home/content/.../html/_sites/mysite/wp-content/themes/mytheme/functions.php 在线2534

解决这些问题的方法有哪些?

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

4

2 回答 2

3

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

理论上,您也可以 eval() 返回的数据。但是运行远程获取的 PHP 代码是一个巨大的安全风险,以这种方式包含的任何 PHP 代码实际上可以做任何你能做的事情。 不要这样做!allow_url_include 也是如此

于 2012-04-18T12:15:31.240 回答
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);
于 2012-04-18T12:18:41.133 回答