2011-10-05 100 views
18

我学习了如何编写一个WordPress插件。我需要一些帮助将一些数据写入XML文件。我在我的本地机器上运行MAMP的Mac。我有PHP 5.2.13。在我的插件,我已经有了:PHP fopen()错误:未能打开流:权限被拒绝

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

运行上面给了我以下错误:

Warning: fopen(markers.xml) [function.fopen]: failed to open stream: Permission denied in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 73

Warning: fwrite(): supplied argument is not a valid stream resource in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 75

Warning: fclose(): supplied argument is not a valid stream resource in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 76

我使用在$ file_handle线的绝对路径的尝试:http://my_site/wp-content/plugins/my_plugin_folder/markers.xml。但是,这并没有奏效。

我也试过改变对markers.xml权限如下:

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

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

在phpinfo()函数,我有:

“已注册的PHP流HTTPS,FTPS,compress.zlib,compress.bzip2,PHP,文件,数据,HTTP,FTP”

是一个WordPress设置导致问题?或者它只是PHP的问题?

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

谢谢。

+0

的可能的复制[PHP - 未能打开流:没有这样的文件或目录](http://stackoverflow.com/questions/36577020/php-failed-to-open-stream-no-such-file-or-directory) –

回答

26

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

sudo chmod 777 markers.xml 

系统可能会提示您输入密码。另外,它可能是不允许完全访问的目录。我对WordPress并不熟悉,所以您可能需要更改每个目录的权限,然后向上移动到mysite目录。

+0

嗨@Chris,谢谢你的讯息。我将markers.xml设置为777,但我仍然收到错误。如果我改变目录移动到mysite,是不是会有安全问题?有什么建议?谢谢。 – Laxmidi

+0

嗨@Chris,我将chmod更改为777一级。我也在本地机器上使用了一个绝对路径,而不是主机的绝对路径。它现在有效!谢谢。 – Laxmidi

+0

谢谢!非常需要:D – cwiggo

-3

[function.fopen]: failed to open stream

如果您可以访问您的php.ini文件,尝试启用F打开。找到相应的线,并将其设置为“ON”:&如果WP例如本地主机/ WordPress的/ function.fopen在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 
+3

这个答案是完全废话。不是解决问题,而是引入安全漏洞。如果你会仔细阅读这个问题,你会发现他想打开一个LOCAL文件:fopen('markers.xml','w');但是你需要allow_url_fopen =只打开REMOTE文件!例如fopen('http://example.com/....xml');请参阅http://www.antary.de/2011/05/26/php-curl-als-alternative-fuer-allow_url_fopen – Elmue

相关问题