我正在尝试在bash脚本'test.sh'
中执行此shell命令igblastn -query input.txt 2>&1
在像这样的php文件中
<?php
$string = "./test.sh";
$output = shell_exec($string);
echo "<pre>$output</pre>;
我不断收到错误
./test.sh: line 2: igblastn: command not found
但是当我使用更多基本命令如'date'或'whoami'时,它输出就好了。这让我相信需要配置apache web usr'www-data'的权限,或者我没有正确地访问igblastn可执行文件。如果我去测试使www-data成为Web服务器的超级用户,我仍然得到错误,所以我不认为这是权限问题,并且是路径问题。 NCBI独立blast的文档规定了$ PATH变量的附属物,并将另一个env变量引入与可执行文件相同的文件夹中的数据库文件。目前,我已将路径位置添加到存储可执行文件的bin中,作为我的Web服务器上/ etc / environment中PATH变量的补充,并添加了另一个环境变量,我还尝试将另一个环境变量添加到/ etc / apache2 / envvars但我仍然无法执行。因此,我想知道是否有人明确知道我应该在哪里创建其他环境变量或指定Apache的路径?
答案 0 :(得分:2)
您的$PATH
并不重要,因为领先的"./"
告诉您的操作系统查看该脚本的当前目录。如果您确实已将该路径添加到$PATH
,则可以删除"./"
,否则,假设test.sh
与调用它的PHP脚本位于同一目录中,则可以只是做
$string = dirname(realpath(__FILE__))."/test.sh";
$output = shell_exec($string);
答案 1 :(得分:0)
感谢任何给我一些建议的人。我决定从我的test.sh脚本运行'env'并查看所有变量。从这里我能够破译确实设置/ etc / apache2 / envvars中的所有变量是正确的方法,我添加了一个PATH变量的附件,这是我的问题开始。