Хостинг. Через Cron не записывался файл - решение!

learnee
8 лет
0

Может кому пригодится... Перерыл кучу информации пока нашел!

Была проблема:
Создал простой скрипт php который записывал результат своего выполнения в файл на сервере.

При запуске через браузер - все работало.
При запуске через Cron - ошибка записи в файл!

Решение оказалось следующим:
- я использовал для абсолютного пути к папке с файлом: $_SERVER['DOCUMENT_ROOT']/file.txt
и для запуска из под браузера - это полностью рабочий вариант!

НО! Для работы из под Cron - необходимо указывать абсолютный путь РУЧКАМИ!

Правильный путь будет следующим: /home/user/site.com/www/file.txt

Разумеется указанный путь - это пример :)
Конкретно ваш путь вы можете посмотреть в настройках своего сайта: Домашняя директория

---
Когда скрипт запускается через веб, он обычно работает или в mod_php, или FastCGI(CGI).
При запуске через крон, он естественно работает в режиме командной строки CLI. Соответственно многие фичи, доступные в режиме модуля, здесь работать не будут

rudenko
8 лет
1

Еще более простой способ использовать константу __FILE__, будет работать как в браузере, так и в cron:
dirname(__FILE__).'/output.log'
Плюс так же в том, что нет разницы, где находится скрипт и не приходится изменять код при перемещении файла в другую директорию.

Тема закрыта.