Я использую сервер Centos 5 и хочу настроить cronjob для запуска каждые 10-е число каждого месяца, но у меня есть следующие проблемы.
Файл PHP, который мне нужно запустить, находится в /var/www/html/test/
называется sendMails.php
Если я перейду в тестовый каталог, например. cd /var/www/html/test
и введите ./sendMails.php
мой сценарий работает идеально.
В тестовом каталоге находится папка с именем template, а в папке с шаблоном находится файл с именем index.htm
. index.htm
читается в sendMails.php
через функцию php file_get_contents
.
Теперь я запускаю сценарий из моего домашнего каталога, например. php /home/roland/sendMails.php
и я получаю следующую ошибку file_get_contents(template/index.htm): failed to open stream: No such file or directory
и не понимаю, почему, теперь это тоже не удастся, если я настрою cron.
Любые советы будут оценены
Как уже было сказано, лучше использовать абсолютный путь.
Я думаю яНе рекомендуется жестко указывать абсолютный путь в каждом скрипте, по крайней мере, если в этом нет реальной необходимости. Это сильный предел переносимости.
Правильный путь - это вычислить абсолютный путь во время выполнения с помощью dirname (__ FILE__) для получения каталога текущего скрипта (самого скрипта, а не автора скрипта, если он существует)
В вашем случае вы можете сделать
<?php
#Sendmail.php
file_get_contents(dirname(__FILE__).'/template/index.htm')
?>
Это должно работать везде!
Вы тоже переместили каталог шаблонов?
Лучше поместить файлы куда-нибудь и сделать скрипт своими абсолютными путями. Например. /path/to/your/script.php и в скрипте включить (/path/to/your/include/dir/index.html)
Создайте сценарий оболочки, который изменяет каталог и запускает сценарий php; затем вызовите этот сценарий оболочки из cronjob.
Вы можете добавить «chdir ('/ var / www / blabla');» в верхней части вашего файла PHP.