问题是当 PHP 尝试运行某些脚本时,我在 mail.log
中收到 bounce back
错误。
我查看了 /var/log/syslog
:
Feb 13 12:09:01 myUserName CRON[11111]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime))
Feb 13 12:39:02 myUserName postfix/pickup[27697]: 48E243F4E2: uid=0 from=<root>
Feb 13 12:39:02 myUserName postfix/cleanup[28826]: 48E243F4E2: message-id=<20160213123902.48E243F4E2@myDomain.com>
Feb 13 12:39:02 myUserName postfix/qmgr[27698]: 48E243F4E2: from=<root@myDomain.com>, size=732, nrcpt=1 (queue active)
Feb 13 12:39:02 myUserName postfix/virtual[28828]: 48E243F4E2: to=<root@myDomain.com>, orig_to=<root>, relay=virtual, delay=0.17, delays=0.12/0.01/0/0.04, dsn=5.1.1, status=bounced (unknown user: "root@myDomain.com")
为什么会这样?我应该如何预防?它使我的日志文件变得困惑。
编辑 1:
我使用 php-fpm
并且 maxlifetime
的内容是:
#!/bin/sh -e
max=1440
if which php5 >/dev/null 2>&1; then
for sapi in apache2 apache2filter cgi fpm; do
if [ -e /etc/php5/${sapi}/php.ini ]; then
cur=$(php5 -c /etc/php5/${sapi}/php.ini -d "error_reporting='~E_ALL'" -r 'print ini_get("session.gc_maxlifetime");')
[ -z "$cur" ] && cur=0
[ "$cur" -gt "$max" ] && max=$cur
fi
done
else
for ini in /etc/php5/*/php.ini /etc/php5/conf.d/*.ini; do
cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true);
[ -z "$cur" ] && cur=0
[ "$cur" -gt "$max" ] && max=$cur
done
fi
echo $(($max/60))
exit 0
最佳答案
脚本总是产生输出,因此当您从 cron 运行它时,cron 会将输出邮寄给 crontab 的所有者。
您可以为此做一些事情:
您可以在 crontab 中设置 MAILTO=youraddress@example.com 来告诉 cron 将邮件发送到哪里。
您可以修改脚本以不输出任何内容。
您可以告诉 cron 丢弃脚本的输出,例如使用 >/dev/null 或类似的。
附言这个问题可能不属于这里。也许 serverfault 或 superuser 会更合适。
关于php-fpm使postfix将邮件从root@myDomain发送到root@myDomain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380061/