首页 > 解决方案 > Ubuntu 20.04 上的 Maxima 分段错误 PHP exec()

问题描述

更新:通过从 php exec 重定向 stderr,我现在可以看到运行最大值会产生分段错误,增加了这实际上是错误的可能性。

重要提示:这曾经在旧版本的 PHP/Ubuntu 上完美运行。

我试图让 PHP exec() (或 shell_exec() )将最大值调用的输出(stdout)重定向到文本文件。我得到的只是一个空文件。

我尝试了最简单的命令:

exec( "maxima -b /var/www/tmpIn.txt > /var/www/tmp/tmpOut.txt"); 

(tmpIn.txt 只包含文本“1+1;”,所有权限都设置正确)。

如果我将此命令粘贴到终端中,它将正常工作,php 的 exec() 只会产生一个空文件。但是,这仅适用于最大值二进制;cat/echo/ls 等重定向就好了。

对我来说,这似乎非常奇怪,特别是因为该代码曾经如前所述运行良好。这个“错误”有什么解决方法吗?

系统信息:Apache2 Maxima 5.43.2 bash 上的 ubuntu 20.04 PHP 7.4 版

标签: phpbashapache2io-redirectionmaxima

解决方案


我终于通过将 Apache 2 用户从 www-data 更改为机器上的另一个用户来解决了这个问题,因此该用户在某种程度上受到了限制。我相信这仍然应该被视为一个错误,因为如果这些限制是故意的,则应该将分段错误消息替换为实际的错误消息。

更新:新的 apache2 用户(从 envvars 文件设置)必须有一个主目录(例如通过 adduser 而不是 useradd 添加)否则问题将持续存在。如果将此设置为活动用户,则如果该用户从外部登录/注销,服务器可能会关闭。这些发现可能指向假设用户目录或类似目录的最大值的错误。我不确定反过来(为 www-data 添加主目录)是否可以解决此错误。


推荐阅读