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. Линия поддержки (или ее отсутствие) - это кошмар, но она работает!

введите описание изображения здесь

Другие вопросы по тегам