[英]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.