#php
#php
Вопрос:
Я на win7, xampp. Это работает:
$path = '../HOME/01.html';
$cnt = file_get_contents($path);
echo $cnt;
Это не работает:
$path = '../HOME/01.html';
$cnt = 'lorem ipsum';
file_put_contents($path, $cnt);
Ошибки или предупреждения нет, просто 01.html
нет содержимого.
Комментарии:
1. надеюсь, что это не фактический код, поскольку в нем есть синтаксические ошибки
2. У вас есть разрешение на запись там? HOME действительно все заглавные буквы?
3. @chiliNUT —
HOME
это все заглавные буквы. Разрешение — я устанавливаю его, щелкнув правой кнопкой мышиHOME - Properties - ... all permissions to all users
Ответ №1:
Как вы можете видеть на странице руководства:
Эта функция возвращает количество байтов, которые были записаны в файл, или FALSE при сбое.
Вы должны убедиться, что возвращаемое значение не false
:
if (file_put_contents($path, $cnt) === false) {
// handle error
}
Однако я бы предположил, что в подавляющем большинстве случаев отсутствуют разрешения на запись в файл. К счастью, в PHP есть функция для проверки этого:
if (!is_writable($path)) {
// No permission to write
}
Итак, объединив эти два, вы могли бы сделать что-то вроде:
if (file_put_contents($path, $cnt) === false) {
if (!is_writable($path)) {
return "You do not have permission to write to $path";
}
return "An unknown error occurred while writing to $path";
}
return "successfully wrote to $path";