2011-10-05 26 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); 

は私に次のエラーを与える:http://my_site/wp-content/plugins/my_plugin_folder/markers.xml

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ラインの絶対パスを使用してみました。しかし、それはうまくいかなかった。

私はまた、次のようにmarkers.xmlのパーミッションを変更してみました:

(ミー):読む&書き込み (不明):のみ みんなを読む:読む&書き込み

を何らかの理由で、私のMacは私に(未知の)Read &を書き換えさせないだろう。違いがあるかどうかは分かりません。私はそのファイルを右クリックし、権限を変更するために「情報を見る」を選択しました。

のphpinfoで

()、私が持っている:

"登録PHPストリームHTTPS、FTPS、compress.zlib、compress.bzip2、PHP、ファイル、データ、HTTP、FTP、"

はですWordPressの設定は問題の原因ですか?それともPHPの問題ですか?

この問題を解決する方法についてのご意見はありますか?

ありがとうございます。

+0

の可能性のある重複した[PHP - ストリームをオープンに失敗しました:そのようなファイルまたはディレクトリ](@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、私は777に1レベル上のchmodを変更しました。また、ホストの絶対パスではなく、ローカルマシン上で絶対パスを使用しました。それは今働きます!ありがとうございました。 – Laxmidi

+0

ありがとうございました! D – cwiggo

-3

[function.fopen]: failed to open stream

あなたがphp.iniファイルへのアクセス権を持っている場合は、関数fopenを有効にしてみてください。それぞれの行を見つけて、「オン」であることを、それを設定します。&場合におけるWP例えばlocalhostの/ワードプレス/ php.iniで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 
+3

この回答は完全なナンセンスです。問題を解決する代わりに、セキュリティホールを導入します。あなたが質問を徹底的に読んでいれば、あなたはLOCALファイルを開きたいと思っていたでしょう:fopen( 'markers.xml'、 'w');しかし、あなたはallow_url_fopen = Onを必要とするのは、REMOTEファイルを開くだけです!たとえば、fopen( 'http://example.com/....xml')の場合http://www.antary.de/2011/05/26/php-curl-als-alternative-fuer-allow_url_fopenをご覧ください。 – Elmue

関連する問題