Функция php file_put_contents не работает - PullRequest
27 голосов
/ 02 января 2011

Почему file_put_contents отказывается работать для следующего кода?

$f = file_put_contents("files/r.js", "Some text here");

if ($f) print 1;
else print 0;

Ответы [ 4 ]

43 голосов
/ 02 января 2011

Это может быть проблема с правами доступа

Является ли каталог /files chmoded на 777?Иногда php не позволяет вам получить доступ к каталогам, если у них недостаточно прав.Хотя я не знаю о пустых ошибках.

Попробуйте проверить, достаточно ли у него разрешений, если нет, то установите 777 и попробуйте.

3 голосов
/ 02 января 2011

Используете ли вы полный путь в файловой системе или пытаетесь использовать URI? Я думаю, что эта функция PHP ожидает, что вы дадите путь, когда файл найден в файловой системе.

Относительные пути должны быть в порядке, хотя.

Возможно, вам нужно убедиться, что файл существует и его разрешения установлены на 777. Иногда я обнаружил, что недостаточно просто установить разрешения для каталога на 777, но файл также должен уже существовать.

1 голос
/ 18 июля 2014

Мы столкнулись с этим, требуя обходного пути (независимо от метода, разрешений и всего остального, упомянутого здесь).Когда все другие исправления не удалось, мы обнаружили, что это может быть связано с ограничениями, созданными SELinux.

0 голосов
/ 20 августа 2017

Если вы используете Windows, следующее решение отлично работает для меня на Windows 10 под управлением PHP 5.5.38

Если у вас возникла эта проблема в Windows / IIS, попробуйте следующее:

  1. Перейдите в папку, в которую вы пытаетесь написать, щелкните правой кнопкой мыши и выберите свойства.
  2. Выберите вкладку «Безопасность»
  3. Нажмите Редактировать
  4. Нажмите Добавить
  5. Нажмите Дополнительно
  6. Нажмите Найти сейчас
  7. Из списка пользователей выберите IUSR и нажмите OK
  8. Нажмите OK еще раз.
  9. IUSR будет отображаться в верхнем поле с надписью «Группа имен пользователей»
  10. Выберите IUSR и предоставьте необходимые разрешения в представлении списка «Permissions for BATCH».
  11. Нажмите Применить, и все готово.

Шаги могут немного отличаться для разных версий окон. Это также относится к ASP.NET, хотя я думаю, что добавленные вами пользователи - это пользователи сети (пользователи NETWORK AND ORWORK SERVICE) и IUSR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...