apache php file_put_contents отказано в разрешении
Сценарий php не может создать файл из-за отказа в разрешениях.
PHP скрипт:
<?
echo exec('whoami');
file_put_contents('/var/www/html/sample.txt','Some random Text');
?>
Выход:
apache
**Warning**: file_put_contents(/var/www/html/test/samds.txt): failed to open stream: Permission denied in **/var/www/html/index.php** on line **3**
Все права доступа к каталогу 777
1 ответ
У меня была та же проблема, и я потерял некоторую конфигурацию. Прежде всего, помните, что пользователь, создавший файл php, может прочитать файл, и если пользователь, создавший файл php, отличается от пользователя apache в вашем случае, это apache
в этом случае вы получите это исключение, если попытаетесь написать от разных пользователей. Так что вам нужно просто, и я бы посоветовал вам отменить 777
Мне не нравятся представления о том, что ваши файлы доступны для чтения и записи в мире, поэтому верните их на 755 и выполните следующую команду в командной строке вашего сервера.
cd /var/www
меняйте пользователя HTML только так, как нам нужно, чтобы он был доступен только для записи, поэтому не трогайте var и www, поэтому, как правило, как только вы перейдете в каталог www, вы собираетесь сменить владельца каталога HTML на того, кто в настоящее время работает сервер Apache, и вы уже получили эту информацию, в вашем случае это apache
поэтому мы собираемся сделать следующее,
chown apache:apache html
На этом этапе владельцем html-файла будет apache, поэтому вы сможете писать на него. В любом случае, я настоятельно рекомендую вам создать отдельный каталог внутри html, скажем, testDir
и попробуйте там, я бы не советовал менять права доступа к корневой папке, у меня был плохой опыт с ними. Во всяком случае, я надеюсь, что это поможет, так как я страдаю больше часа и только сейчас получил правильный способ сделать это. Это исправило мою проблему Надеюсь, это тоже поможет.