繁体   English   中英

如何使用PHP设置$ PATH?

[英]How do I set $PATH using PHP?

我的网站托管在共享服务器上,因此我没有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,所以它并不完全知道如何查找其他文件。 我希望,如果可以将$PATH 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 ,没有给出任何输出,并且该命令返回了成功的退出值。 仅仅是服务器的限制使我无法正常工作吗?

首先,这是行不通的。

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

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

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

我希望,如果可以将$ absolute / path / to / java / bin添加到$ PATH,那么此问题将得到解决。

好吧,只有在您使用简单的命令名称来调用java命令时,它才有帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM