PHP fopen()错误:无法打开流:权限被拒绝

时间:2011-10-05 17:16:49

标签: php wordpress wordpress-plugin fopen permission-denied

我学习如何编写WordPress插件。我需要一些帮助将一些数据写入XML文件。我在我的本地机器上,一台运行MAMP的Mac。我有PHP 5.2.13。在我的插件中,我有:

$file_handle = fopen('markers.xml', 'w');
$stringdata = "Test Info";
fwrite($file_handle, $stringdata);
fclose($file_handle);

运行上面的代码会出现以下错误:

  

警告:fopen(markers.xml)[function.fopen]:无法打开流:   许可被拒绝   /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php   第73行

     

警告:fwrite():提供的参数不是有效的流资源   /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php   第75行

     

警告:fclose():提供的参数不是有效的流资源   /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php   在第76行

我尝试使用$ file_handle行中的绝对路径:http://my_site/wp-content/plugins/my_plugin_folder/markers.xml。但是,这没效果。

我还尝试更改markers.xml的权限,如下所示:

(我):阅读&写 (未知):只读 大家:阅读&写

出于某种原因,我的Mac不会让我改变(未知)阅读&写。我不确定这是否有所作为。我右键单击该文件并选择“获取信息”以更改权限。

在phpInfo()中,我得到了:

“已注册的PHP Streams https,ftps,compress.zlib,compress.bzip2,php,file,data,http,ftp”

WordPress设置是否导致问题?或者只是PHP问题?

有关如何解决此问题的任何建议?

谢谢。

2 个答案:

答案 0 :(得分:28)

您可能需要以管理员身份更改权限。在Mac上打开终端,然后打开markers.xml所在的目录。然后键入:

sudo chmod 777 markers.xml

系统可能会提示您输入密码。此外,它可能是不允许完全访问的目录。我不熟悉WordPress,因此您可能需要将每个目录的权限更改为mysite目录。

答案 1 :(得分:-3)

[function.fopen]: failed to open stream

如果您有权访问php.ini文件,请尝试启用Fopen。找到相应的行并将其设置为“on”:&如果在wp中,例如php.ini中的localhost / wordpress / function.fopen:

allow_url_fopen = off
should bee this 
allow_url_fopen = On

And add this line below it:
allow_url_include = off
should bee this 
allow_url_include = on