【发布时间】:2018-06-11 14:52:58
【问题描述】:
我们已经设置了一个运行您的基本 Apache2/PHP 7.2 的 Web 服务器,它已经运行了至少一个月,直到今天早上几乎每个 shell 命令都开始失败并出现类似这样的错误
PHP 警告:shell_exec(): 无法执行 'zip -r -j'/domains/domain.com/public_html/tmp/140dd1f0-6b3f-11e8-84cd-1206bb36a2db/images.zip' '/domains/domain .com/public_html/tmp/140dd1f0-6b3f-11e8-84cd-1206bb36a2db'/*' 在 /domains/domains.com/public_html/ajax/userquotes/downloadquoterequestimages.php 第 142 行,引用者:...
甚至 Imagick 扩展在处理图像时也遇到了问题:
PHP 致命错误:未捕获的 ImagickException:FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits =4 -dGraphicsAlphaBits=4 '-r72x72' '-sOutputFile=/tmp/magick-8882jXzj7ATO9YoA%d' '-f/tmp/magick-8882W_l5stP6rIRq' '-f/tmp/magick-8882B61J5TQj6Fkh'' (-1) @ 错误/delegate.c/ExternalDelegateCommand/462 在 /domains/domain.com/public_html/ajax/uploadimage.php:125\n堆栈跟踪:\n#0 /domains/domain.com/public_html/ajax/uploadimage.php(125) :Imagick->__construct('/domains/doma...')\n#1 {main}\n 在第 125 行抛出 /domains/domain.com/public_html/ajax/uploadimage.php,引用者:...
这是一个经常使用的服务器,而且这些错误都是同时发生的。 RAM、Swap 和存储空间都正常,几乎没有容量。
我也可以直接在服务器上运行失败的命令而没有任何问题,然后当我运行service apache2 restart时,服务器正常重启,一切都开始工作了。
我希望我可以进一步调试,但由于这是一个生产服务器,我需要快速修复。从源代码而不是从 repo 构建 PHP 会减少这种稳定性问题的机会吗?
- Linux:Debian GNU/Linux buster/sid
- PHP:7.2.2-1+0~20180205160612.18+jessie~1.gbpb78b58
- Apache:Apache/2.4.29
【问题讨论】:
-
这里似乎没有任何实际的错误消息要跟进。您可以在控制台以任何形式运行 zip 命令吗?可能
PATH已更改,您的两个未指定完全限定目录的命令不再找到。 -
@halfer 是的,我能够运行所有直接在服务器上失败的命令,包括 zip 命令,没有任何问题,只有 PHP 似乎突然出现了问题
-
@delboy1978uk
gs给我以GPL Ghostscript 9.22开头的输出,正如我所说,所有命令都直接工作,只是重启前的 PHP 有问题 -
@delboy1978uk 他们一直工作到大约 10:20,然后他们都开始失败,然后 apache2 重新启动,他们继续工作,就像什么都没发生一样
-
@halfer 是的,我自己使用 haproxy 取得了不错的成绩,因为它会不断检查正常运行时间并可以自动切换。再加上服务器是冗余的,我可以阻止流量到坏的服务器并进行实际调查,所以我们最终肯定会走这条路