Подтвердить что ты не робот

Функция php file_put_contents не работает

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

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

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

Ответ 1

Это может быть проблема разрешения

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

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

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