LAMP 环境变量 ($PATH) 有问题
Trouble with LAMP environment variables ($PATH)
我正在尝试在 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 standalone blast 的文档规定了 $PATH 变量的附加物,并将另一个环境变量引入到与可执行文件相同的文件夹中的数据库文件中。目前,我已经将路径位置添加到存储可执行文件的 bin,作为我 Web 服务器上 /etc/environment 中 PATH 变量的补充,并添加了另一个环境变量,我还尝试添加了另一个环境变量到 /etc/apache2/envvars 但我仍然无法执行。因此我想知道是否有人明确知道我应该在哪里创建额外的环境变量或为 Apache 指定路径?
您的 $PATH
无关紧要,因为前导 "./"
告诉您的 OS 在当前目录中查找该脚本。如果您确实将该路径添加到 $PATH
,您只需删除 "./"
,否则,假设 test.sh
与调用它的 PHP 脚本位于同一目录中,您可以只是做
$string = dirname(realpath(__FILE__))."/test.sh";
$output = shell_exec($string);
感谢所有给我建议的人。我决定从我的 test.sh 脚本中 运行 'env' 并查看所有变量。由此我能够破译确实在 /etc/apache2/envvars 中设置所有变量是正确的方法,并且我向 PATH 变量添加了一个附件,这是我一开始的问题。
我正在尝试在 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 standalone blast 的文档规定了 $PATH 变量的附加物,并将另一个环境变量引入到与可执行文件相同的文件夹中的数据库文件中。目前,我已经将路径位置添加到存储可执行文件的 bin,作为我 Web 服务器上 /etc/environment 中 PATH 变量的补充,并添加了另一个环境变量,我还尝试添加了另一个环境变量到 /etc/apache2/envvars 但我仍然无法执行。因此我想知道是否有人明确知道我应该在哪里创建额外的环境变量或为 Apache 指定路径?
您的 $PATH
无关紧要,因为前导 "./"
告诉您的 OS 在当前目录中查找该脚本。如果您确实将该路径添加到 $PATH
,您只需删除 "./"
,否则,假设 test.sh
与调用它的 PHP 脚本位于同一目录中,您可以只是做
$string = dirname(realpath(__FILE__))."/test.sh";
$output = shell_exec($string);
感谢所有给我建议的人。我决定从我的 test.sh 脚本中 运行 'env' 并查看所有变量。由此我能够破译确实在 /etc/apache2/envvars 中设置所有变量是正确的方法,并且我向 PATH 变量添加了一个附件,这是我一开始的问题。