【问题标题】:Trouble with LAMP environment variables ($PATH)LAMP 环境变量 ($PATH) 的问题
【发布时间】:2015-12-12 03:27:45
【问题描述】:

我正在尝试在 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

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

【问题讨论】:

标签: php bash apache path environment-variables


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您的$PATH 无关紧要,因为领先的"./" 告诉您的操作系统在当前目录中查找该脚本。如果您确实已将该路径添加到$PATH,则可以删除"./",否则,假设test.sh 与调用它的PHP 脚本位于同一目录中,您可以这样做

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

    【讨论】:

    • @javidaceil PS,欢迎来到 SO,当您选择答案时,您将获得前两分,所以如果这有帮助,请按我的答案打勾。如果你愿意,你也可以投票:)
    • 不敢相信我错过了。好眼力
    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2019-05-15
    • 2017-08-05
    • 2012-09-05
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多