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

2022-08-30 17:13:10

我学习如何编写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():在第 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。但是,这并没有奏效。

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

(我):读和写(未知):只读所有人:读和写

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

在phpInfo()中,我有:

“Registered PHP Streams https, ftps, compress.zlib, compress.bzip2, php, file, data, http, ftp”

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

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

谢谢。


答案 1

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

sudo chmod 777 markers.xml

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


答案 2

[function.fopen]: failed to open stream

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

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

推荐