php super 调用exec,禁止从PHP中的exec()调用输出

我在PHP中有许多命令行脚本使用

exec()

要执行诸如重新启动服务、加载MySQL时区文件等任务,虽然exec()本身不向屏幕输出任何内容,但我正在运行的某些命令强制输出似乎无法抑制(即使使用ob_start()/ob_end_clean())。例如,下面将把时区文件加载到MySQL中。我们定期运行此命令以确保mysqls时区数据是最新的:

$command = 'mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql';

exec($command, $output, $result);

在这个例子中,我希望命令的所有输出都写入$output,但是我仍然会得到以下强制输出到屏幕上:

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it.

...

有没有办法抑制这种输出?重定向到/dev/null并不理想,因为这将导致PHP在不等待命令完成的情况下继续处理。

事先谢谢,

~詹姆士

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值