2011-10-05 99 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

相關問題