2013-11-19 2 views
0

Я создал простой PHP-скрипт, который выполняется демоном CRON на моем удаленном веб-сервере. Каждые несколько минут сценарий просматривает некоторые данные JSON на другом веб-сайте и сохраняет результаты в файле в той же папке, что и сам.Какое место называется Cron?

Однако, кажется, что файл, который используется при навигации по странице в браузере, используется другой файл, чем при выполнении cron.

Другими словами: Когда происходит здесь:

www.example.com/cronscripts/my_script.php файл /home/user_xxx/domains/example.com/public_html/cronscripts/datafile.json используется.

Однако при вызове сценария, используя следующую инструкцию: хрон

/usr/local/bin/php /home/user_xxx/domains/example.com/public_html/cronscripts/my_script.php файл на другом месте используется. Этот файл находится в папке/usr/local/bin/php на сервере Linux? Если это так, я не могу получить к нему доступ вручную, потому что я могу получить доступ только к папке/home/user_xxx /.

Может ли кто-нибудь сказать мне, где файл заканчивается при использовании Cronjobs?

+1

Если вы всегда использовать абсолютные пути в сценарии, эта проблема будет избежать. Вы можете использовать 'realpath (dirname (__ FILE__). '/ ..')', заменяя столько '..', сколько вам нужно, чтобы попасть в« корень »вашего проекта, а затем добавить путь оттуда. – halfer

+0

@ ansh0l, я попробую завтра, когда я снова работаю. Не волнуйся. – Qqwy

ответ

1

Это похоже на несоответствие пути для местоположения, вы, скорее всего, используете относительный путь где-то для файла json.

Я думаю, вы должны запланировать cronjob следующим образом и посмотреть, если это работает

* * * * * cd /home/user_xxx/domains/example.com/public_html/cronscripts && /usr/local/bin/php my_script.php 
0

Вы должны использовать абсолютный путь к скрипту на сервере т.е. /var/www/script.php

Попробуйте использовать вместо

*/1 * * * * PHP/дома/user_xxx/домены/example.com/public_html/cronscripts/my_script.php

+0

В инструкции cron я использую абсолютный путь. Или это не то, что вы имеете в виду? – Qqwy

+0

вы можете скопировать и вставить синтаксис, который из вашего cron? –

+0

'*/1 * * * */usr/local/bin/php/home/user_xxx/domains/example.com/public_html/cronscripts/my_script.php' - это синтаксис, который я использую для cron. – Qqwy

-1

Просто примечание стороны: пожалуйста всегда использование #/bin/окр PHP (см http://seancoates.com/blogs/use-env для получения дополнительной информации)

0

использование chdir(), чтобы гарантировать, что вы начинаете в соответствующем каталоге, также может помочь.

Смежные вопросы