Ubuntu升级PHP 5.x至7.2后,Cron定时发送PHP启动警告邮件
解决Ubuntu 14.04升级PHP到7.2后Cron发送sessionclean警告邮件的问题
我之前帮不少人处理过这个问题——你遇到的情况本质是PHP升级后旧配置残留,加上cron里的sessionclean脚本没适配新的PHP版本导致的:邮件里提到的php_intl.dll是Windows平台的PHP扩展(Linux下根本不会用这个后缀),而且路径/usr/lib/php/20131226/是PHP5.x的扩展目录(PHP7.2对应的是/usr/lib/php/20170718/),显然是旧的PHP5配置还在被调用。
下面是一步步解决的方法:
1. 清理残留的PHP5.x扩展配置
首先找到所有和intl相关的旧配置文件:
sudo find /etc/php -name "*intl*.ini"
执行后会列出所有包含intl的配置文件,比如/etc/php/5.6/mods-available/intl.ini或者/etc/php5/conf.d/20-intl.ini这类属于PHP5的文件。处理方式二选一:
- 直接删除旧配置文件:
sudo rm /etc/php/5.6/mods-available/intl.ini - 或者注释掉配置里的错误行(不想删除的话):
sudo sed -i 's/extension=php_intl.dll/;extension=php_intl.dll/' /path/to/your/old/intl.ini
2. 让sessionclean脚本使用PHP7.2
默认的sessionclean可能还在调用系统旧的PHP版本,先确认当前默认PHP:
php -v
如果显示的是PHP5.x,就把默认PHP切换到7.2:
sudo update-alternatives --set php /usr/bin/php7.2
更稳妥的方式是直接修改sessionclean脚本,指定PHP7.2的绝对路径:
sudo nano /usr/lib/php/sessionclean
找到脚本里所有调用php的地方,替换成/usr/bin/php7.2,保存后退出。
3. 验证修复效果
手动执行cron里的命令,确认没有警告输出:
[ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi
如果没有任何报错,说明问题已经解决,接下来不会再收到cron的警告邮件了。
内容的提问来源于stack exchange,提问作者kayza
相关产品推荐
相关产品推荐

