我的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服务器上的所有本地文件。是否有读取/写入文件内容的首选方法?
答案 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);