PHP fopen() Ошибка: не удалось открыть поток: разрешение отклонено
Я изучаю, как писать плагин 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
Предупреждение: аргумент fwrite(): поставляемый аргумент не является допустимым ресурсом потока в /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 следующим образом:
(Me): чтение и запись
(неизвестно): Только для чтения
все: чтение и запись
По какой-то причине мой Mac не позволит мне меняться (неизвестно) на чтение и запись. Я не уверен, что это имеет значение. Я щелкнул правой кнопкой мыши по файлу и выбрал "Получить информацию", чтобы изменить разрешения.
В phpInfo() у меня есть:
"Зарегистрированные потоки PHP https, ftps, compress.zlib, compress.bzip2, php, file, data, http, ftp"
Является ли параметр WordPress причиной проблемы? или это просто проблема с PHP?
Любые предложения по решению этой проблемы?
Спасибо.
Ответы
Ответ 1
Вам может потребоваться изменить права администратора. Откройте терминал на своем Mac, а затем откройте каталог, в котором находится markers.xml. Затем введите:
sudo chmod 777 markers.xml
Вам может быть предложено ввести пароль. Кроме того, это могут быть каталоги, которые не позволяют получить полный доступ. Я не знаком с WordPress, поэтому вам может потребоваться изменить разрешение каждого каталога, перемещающегося вверх в каталог mysite.
Ответ 2
[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