PHP fopen () Ошибка: не удалось открыть поток: отказано в разрешении - PullRequest
18 голосов
/ 05 октября 2011

Я учусь писать плагин для WordPress.Мне нужна помощь в записи некоторых данных в файл XML.Я на своей локальной машине, Mac под управлением MAMP.У меня 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

Внимание: предоставленный аргумент не является допустимым потокомресурс в /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php в строке 75

Предупреждение: указанный аргумент fclose (): не является допустимым потоковым ресурсом в / Users / my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php в строке 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?

Есть предложения по решению этой проблемы?

Спасибо.

Ответы [ 2 ]

28 голосов
/ 05 октября 2011

Вам может потребоваться изменить разрешения как администратор.Откройте терминал на вашем Mac, а затем откройте каталог, в котором находится markers.xml. Затем введите:

sudo chmod 777 markers.xml

Возможно, вас попросят ввести пароль.Кроме того, это могут быть каталоги, которые не разрешают полный доступ.Я не знаком с WordPress, поэтому вам, возможно, придется изменить разрешение каждого каталога, перемещающегося вверх в каталог mysite.

0 голосов
/ 20 июня 2013

[function.fopen]: failed to open stream

Если у вас есть доступ к файлу php.ini, попробуйте включить Fopen.Найдите соответствующую строку и установите для нее значение «on»: & если в wp например localhost / 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
...