我有一个PHP脚本,可以读取电子邮件,保存附件,读取已保存的csv文件以及加载包含csv文件内容的数据库。 我使用Jamesiarmes \ PhpEws库连接到我的Exchange Server,一切都运行良好。 因为我每天都需要这样做,所以我每天都在十点钟使用crontab来运行PHP脚本。
00 10 * * * /usr/bin/php /home/web/update/format-recent-report.php > /home/web/log/readmail.log 2> /home/web/log/readmail.err
当Crontab尝试运行脚本时出现问题。 readmail.err文件包含以下错误:
PHP致命错误:找不到类'jamesiarmes \ PhpEws \ Client' 第8行/home/web/update/exchange_config.php
这是exchange_config.php
:
<?php
use \jamesiarmes\PhpEws\Client;
$host = 'xxx.xxxx.it';
$username = 'yyyyy';
$password = 'zzzzzz';
$version = Client::VERSION_2010;
?>
Afetr收到错误,我转到脚本所在的目录并尝试使用以下命令手动运行脚本:
php format-recent-report.php > log
并且脚本正常工作。为什么crontab和manual之间存在这种差异?
我没有发布PHP脚本的内容,因为它很长,但我可以说它始于:
include '../vendor/autoload.php';
include 'exchange_config.php';
它在一开始就停止了。
答案 0 :(得分:1)
如果您使用cron启动脚本,请始终使用文件的完整路径。
添加到脚本dirname(__FILE__)
中的每个路径,并在必要时添加/
。