Задание Крона PHP: Включая файл, не работающий?

я выполняю задание крона каждую ночь, но по некоторым причинам, оно говорит, что файл, который я пытаюсь включать, является несуществующим:

Warning: require(../includes/common.php): failed to open stream: No such file or directory in /home/fini7463/public_html/cron/journeyNotifications.php on line 2
Fatal error: require(): Failed opening required '../includes/common.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/fini7463/public_html/cron/journeyNotifications.php on line 2

вот код:

set_include_path('/home/fini7463/public_html/includes/');
require 'common.php';

файл 'common.php' расположен следующим образом

public_html => cron     => journeyNotifications.php
            => includes => common.php

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

спасибо!

5
задан gsquare567 29 June 2010 в 12:42
поделиться

2 ответа

Если вы выполняете require('../includes/common.php'), путь просматривается относительно текущего рабочего каталога.

Если вы делаете require('common.php'), файл ищется в пути include и в каталоге скрипта, который вызывает require().

Чтобы решить эту проблему, сначала измените каталог в вашем crontab:

cd /home/fini7463/public_html; php -f cronjob.php
9
ответ дан 18 December 2019 в 16:35
поделиться

Вызов set_include_path () при этом удаляет предыдущий путь. Вызов заменяет предыдущий путь тем, что вы передаете в качестве аргумента, поэтому, если какой-либо из вашего кода загружает другие библиотеки (например, модули PEAR / PECL), они больше не будут доступны, поскольку вы удалили путь включения. Вы должны использовать:

set_include_path(get_include_path() . PATH_SEPARATOR . '/home/fini7463/public_html/includes/');

Это добавит ваш новый путь к пути включения.

Кроме того, вы никогда не сможете точно сказать, какой будет рабочий каталог, когда cron запустит ваш скрипт. Это может быть домашний каталог пользователя, с которым вы запускаете скрипт, например / tmp или какой-то другой каталог целиком. Если вы хотите использовать относительные пути в скрипте для чего-либо, вам нужно убедиться, что для рабочего каталога задано известное значение. Либо используя 'cd' в crontab, либо используя 'chdir' внутри скрипта, прежде чем делать что-либо, связанное с относительными путями.

3
ответ дан 18 December 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: