【发布时间】:2014-06-20 20:13:35
【问题描述】:
我需要你的帮助。 我为 PHP 应用程序编写了一个 PERL 脚本,需要每 5 分钟运行一次。 该脚本将调用 PHP 程序,该程序将从 MySQL DB 中获取数据并生成 Excel 报告并将这些报告邮寄给特定用户。 当我使用命令 (perl reports.pl) 手动运行此脚本时,一切似乎都很好。 但是当我在 cron 选项卡中设置这个 Perl 时,没有任何效果,也没有生成报告。
详情:perl脚本路径/opt/app/deweb/web/EDI/Microsoft/reports.pl
此脚本将调用 PHP 程序 (/opt/app/deweb/web/EDI/Microsoft/reports.php)
content of script
#!/usr/local/bin/perl
use Net::FTP;
use File::Copy;
use POSIX;
@errorreport = `php /opt/app/deweb/web/EDI/Microsoft/reports.php`;
print "@errorreport\n";
exit;
使用命令手动运行时运行良好 - perl reports.pl
没有结果,在 CRON 中设置时:
*/5 7-19 * * * /usr/local/bin/perl /opt/app/deweb/web/EDI/Microsoft/reports.pl
请注意,此 crontab 位于名为 webserv 的超级用户帐户下,我的登录名有权在此超级用户帐户下进行编辑。
我正在使用命令编辑这个 cron 选项卡 :: sudo -u webserv crontab -e
【问题讨论】:
-
去掉
use Net::FTP和use File::Copy和use POSIX因为你显然没有使用它们。输入 PHP 的完整路径。 -
是什么让你认为这是 Perl 脚本而不是 PHP 脚本?
-
为什么不直接调用PHP脚本呢?
-
这个脚本有什么意义?为什么不直接从 cron 运行 PHP 脚本?
-
大家好,感谢您的建议。我将 PHP 直接保存到 Cron 并且它工作正常。我为什么要使用 Perl 是通过一个程序运行多个 PHP 脚本。目前以上建议解决了我的问题。