如何使用PHP设置$ PATH?

时间:2014-03-20 16:04:49

标签: java php linux path

我的网站托管在共享服务器上,所以我没有su访问权限。我需要用java运行一段代码,但它在服务器上不可用。所以我得到了一个java的自解压版本并将其放在我主目录的服务器上。然后我给了java的可执行权限,我尝试运行代码。由于服务器的限制,我必须在运行文件时使用相对路径。

尝试运行java文件../java/bin/java -jar 'javafile.jar'给出了以下内容:

error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

我看了,libjli.so位于../java/lib/i386/jli/libjli.so。所以我在想,因为我使用相对路径运行java,它并不完全知道如何查找其他文件。我希望如果我可以将absolute/path/to/java/bin添加到$PATH,那么这个问题就会得到解决。

因此,一旦我运行PHP,我就可以使用dirname(__FILE__)来获取我的java bin目录的完整路径。我尝试过以下代码:

exec('export PATH='.$bin_path.':$PATH', $output, $return);
print_r(array(getenv('PATH'), $output, $return));

Prints:
Array(
  [0] => /usr/local/admin/bin:/usr/local/admin/bin/servers:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/bin:/usr/bin,
  [1] => Array(),
  [2] => 0
)

因此没有向$PATH添加任何内容,没有给出输出,并且该命令返回了一个成功的退出值。只是服务器的限制阻止了我的工作吗?

1 个答案:

答案 0 :(得分:1)

首先,这不会起作用。

exec('export PATH='.$bin_path.':$PATH', $output, $return);

它将使用shell启动子进程,在shell中运行export命令,然后shell将退出。但export命令仅更改该shell的$PATH

我不确定,但我怀疑你需要使用putenv

  

我希望如果我可以将绝对/路径/添加到/ PAT / bin到$ PATH,那么这个问题就会得到解决。

嗯,只有使用简单的命令名来调用java命令才能提供帮助。

使用完整的绝对路径名运行java会更简单;例如"/absolute/path/to/java/bin/java"