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

Lax*_*idi 18 php wordpress fopen wordpress-plugin 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);
Run Code Online (Sandbox Code Playgroud)

运行上面的代码给出了以下错误:

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

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

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

我尝试使用$ 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问题?

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

谢谢.

Chr*_*ris 28

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

sudo chmod 777 markers.xml
Run Code Online (Sandbox Code Playgroud)

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

  • CHMOD 777非常不安全,不应使用 (18认同)
  • @AyaskantMishra你可以使用`chmod 760 markers.xml`.所有者拥有所有权限,组具有读写权限,其他人完全没有权限. (2认同)