file_put_contents() не обновляет содержимое файла должным образом
Go Daddy - мой провайдер услуг хостинга. У них есть fwrite()
а также file_put_contents()
отключено на общих серверах Go Daddy.
Мне отчаянно нужно написать в файл. По какой-то причине file_put_contents()
успешно создает файл, если он еще не существует, и записывает в него один раз. Тем не менее, он не обновляет содержимое (как следует) файла.
Пример: если я изменил строку "write" ниже на "Goodbye World" и перезапустил скрипт, ничто в файле freesample7.php не изменилось бы, оно все равно останется "Hello World...".
В качестве исправления я попытался удалить файл, а затем воссоздавать его при каждом запуске сценария, однако это не решило проблему, содержимое файла осталось таким же, как и в первый раз, когда файл был записан.
Мне было интересно, есть ли способ обойти эту проблему, так как мне крайне необходимо найти способ записи в файл и периодически обновлять содержимое этого конкретного файла.
unlink('../html/freesample7.php');
sleep(20);
file_put_contents("../html/freesample7.php","Hello World. Testing!sdsd");
4 ответа
Проблема заключалась в ограничениях на Godaddy сервере. Не было никаких способов обойти это, я попытался принять совет, упомянутый в этом посте, но безуспешно. Я нашел обходной путь, используя задания cron и PHP-скрипт mysql, чтобы сделать то, что я должен был сделать.
Для тех, кому нужно записать файл с использованием общего сервера для размещения на GoDaddy, насколько мне известно, единственный способ обойтись - получить выделенный сервер на GoDaddy вместо общего сервера.
Вы пытались использовать функцию php CHMOD(), чтобы изменить права доступа к файлу?
// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);
См. http://php.net/manual/en/function.chmod.php для более подробной информации о chmod. Хотя я вижу, что это проблема безопасности для Go Daddy, в любом случае, попробуйте.
ИЗМЕНЕНО ДЛЯ ДОБАВЛЕНИЯ АЛЬТЕРНАТИВЫ
В качестве альтернативы, поскольку это не сработало, и поскольку у меня есть учетная запись хостинга Go Daddy, я попробовал это, и это сработало. Вы бы использовали fopen, fwrite и fclose вместо file_put_contents.
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = "Some text in here\n";
fwrite($fh, $stringData);
$stringData = "Some more text in here\n";
fwrite($fh, $stringData);
fclose($fh);
Функции включены. Если бы они были отключены, вы получите сообщение об ошибке No suitable wrapper found
,
Далее вам следует проверить права доступа к файлам, которые создал сервер.
Также попробуйте следующее:
file_put_contents("FILE.txt", "STring", FILE_APPEND);
Это добавит файл, а не перезапишет его. Есть ли разница?
У меня просто была эта проблема.
Мое решение заключается в следующем:
Среда:
Plesk / Windows / PHP
file_put_contents
Решение:
1) зайти в файловый менеджер
2) щелкните контекстное меню рядом с файлом или папкой
3) нажмите "Изменить разрешения"
4) выберите группу "IWPG"
5) увеличить уровни прав справа (например, полный контроль) и сохранить
Должен быть эквивалент для linux/cpanel. Линия поддержки (или ее отсутствие) - это кошмар, но она работает!