首页 > 解决方案 > 从cron执行的php脚本表现得很奇怪

问题描述

我有一个 Centos 7 服务器。我有这个 php 脚本 ( conn.php ),它执行一个 shell 命令来计算 SMTP 连接的数量并将它们保存在 /usr/local/conn.txt

    <?php
$conn=rtrim(shell_exec("ss -tn | egrep \":25 |:26 |:587 |:465 \" | egrep \"^ESTAB\" | awk '{print $4}' | egrep -c \":25|:26|:587|:465\" >> /usr/local/conn.txt " ));
?>

如果我从控制台执行脚本

 /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/conn.php

它运行良好,并在 /usr/local/conn.txt 中保存了正确数量的 SMTP 连接。例如

15
24
56
34
12

但是如果我像这样设置一个根 cron 来每 2 分钟执行一次脚本

*/2 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/conn.php

该脚本仅在 /usr/local/conn.txt 中保存一长串 0(每次 cron 执行时为零)

0
0
0
0
0
0

怎样才能避免这种情况?如果从根 cron 执行,为什么脚本不返回正确的值?

标签: phplinuxcron

解决方案


推荐阅读