LAMP环境变量($PATH)的问题


Trouble with LAMP environment variables ($PATH)

我正在尝试在bash脚本'test.sh'中执行这个shell命令

igblastn -query input.txt 2>&1

<?php
   $string = "./test.sh";
   $output = shell_exec($string);
   echo "<pre>$output</pre>;

我一直得到错误

./test.sh: line 2: igblastn: command not found

但是当我使用更基本的命令,如'date'或'whoami',它输出很好。这让我相信apache web用户'www-data'的权限需要配置,或者我没有正确地路径到igblastn可执行文件。如果我去测试使www-data成为web服务器的超级用户,我仍然会得到错误,所以我不认为这是权限问题,并且是路径问题。NCBI独立blast的文档规定了$PATH变量的附件,并将另一个env变量引入到与可执行文件位于同一文件夹中的数据库文件中。目前,我已经将路径位置添加到bin中,其中可执行文件存储在我的web服务器上的/etc/environment中的path变量中,并添加了其他环境变量,我还尝试将另一个环境变量添加到/etc/apache2/envars,但我仍然无法执行。因此,我想知道是否有人确切地知道我应该在哪里创建额外的环境变量或为Apache指定路径?

您的$PATH不重要,因为前面的"./"告诉您的操作系统在当前目录中查找该脚本。如果您确实将该路径添加到$PATH,则可以删除"./",否则,假设test.sh与调用它的PHP脚本在同一目录中,则可以执行

$string = dirname(realpath(__FILE__))."/test.sh";
$output = shell_exec($string);

感谢所有给我建议的人。我决定从test.sh脚本中运行'env'并查看所有变量。由此,我能够破译,确实设置/etc/apache2/envars中的所有变量是正确的方法,我添加了一个附件到PATH变量,这是我的问题开始。