PHP shell_exec() 命令未找到

PHP shell_exec() 命令未找到

我需要使用 php 执行一个程序,有问题的文件是 ClustalW (clustalw2)。我的apache用户是使用fish shell的http,所以我将clustalw2移动到/srv/http/Clustal并将目录添加到fish路径。
如果我使用终端登录 http 并运行,clustalw2 -INFILE=input_file -OUTFILE=output_file一切都会按预期工作。
但每次我运行时都shell_exec('clustalw2 -INFILE=input_file -OUTFILE=output_file');没有任何反应,并且我收到以下错误日志:sh: line 1: clustalw2: command not found


如果我运行:

<?php
echo "USER: ".shell_exec('whoami')."<br>";
echo "SHELL: ".shell_exec('echo "$SHELL"')."<br>";
echo "WHICH clustalw2: ".shell_exec('which clustalw2');

输出:
用户:http
shell:/usr/bin/fish
其中 clustalw2:


如果我which clustalw2使用 http 用户在终端中运行:

/srv/http/Clustalw/clustalw2

答案1

找不到您的程序,clustalw2因为clustalw2它不在$PATH.

对于您的情况,最简单的解决方案是替换clustalw2为完整路径,/srv/http/Clustalw/clustalw2作为shell_exec.

相关内容