繁体   English   中英

PHP Cron作业:包含文件不工作?

[英]PHP Cron Job: Including file not working?

我每晚都会运行一个cron作业,但由于某种原因,它说我尝试包含的文件是不存在的:

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

我甚至设置了包含路径(如代码所示),但我仍然收到此错误。 问题是什么?

谢谢!

如果确实require('../includes/common.php') ,则相对于当前工作目录遍历路径。

如果确实require('common.php') ,则在include路径中以及调用require()的脚本目录中搜索文件。

要解决此问题,请首先更改crontab中的目录:

cd /home/fini7463/public_html; php -f cronjob.php

在调用set_include_path()上一个路径。 调用将您传递的任何内容替换为上一个路径作为参数,因此,如果您的任何代码加载其他库(即:PEAR / PECL模块),则在您删除包含路径时将无法再访问它们。 你应该使用:

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

这会将您的新路径追加到包含路径。

同样,当cron启动脚本时,你永远无法确定工作目录是什么。 它可能是您运行脚本的用户的主目录,可能是/ tmp,或完全是其他目录。 如果要在脚本中使用相对路径来执行任何操作,则必须确保将工作目录设置为已知值。 通过在crontab中使用'cd',或者在执行涉及相对路径的任何事情之前在脚本中使用'chdir'。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM