Я работаю над плагином Wordpress и сталкиваюсь с этой проблемой. Мой плагин не может записывать файлы на диск. Вот мой тестовый код.
<?php
$fl = fopen ( "output/test.txt" , "w" );
fwrite ( $fl , "This is a test" );
fclose ( $fl );
?>
Если я запускаю это в отдельном файле PHP, тогда test.txt появляется, как и ожидалось, и «Это тест» находится в файле.
Если я запускаю это как часть плагина Wordpress, ничего не происходит. Никаких ошибок не генерируется, и в папке ничего не появляется.
Все скрипты и папка принадлежат пользователю apache (www-data), права доступа к папке 775. Я также пробовал 777, но это ничего не изменило, поэтому я вернул его обратно.
Что мне следует попробовать дальше или какую другую информацию я могу предоставить?
Вы должны использовать свой абсолютный путь или путь ДОКУМЕНТА. Прямо сейчас вы пытаетесь найти каталог с именем output
в корень файловой системы или корневом каталоге приложения, где выполняется фактический вызов, поэтому, если вы re внутри каталога класса, когда вызов будет сделан, он будет искать в ЭТОМ каталоге, а не в том, в котором находится скрипт.
<?php
$fl = fopen ( "/var/www/path/to/your/wp/output/test.txt" , "w" );
fwrite ( $fl , "This is a test" );
fclose ( $fl );
?>
ИЛИ
<?php
$fl = fopen ( $_SERVER["DOCUMENT_ROOT"] . "/myWPFolder/output/test.txt" , "w" );
fwrite ( $fl , "This is a test" );
fclose ( $fl );
?>