java如何使用PHP设置$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 楼答案
首先,这是行不通的
它将使用shell启动一个子进程,在shell中运行
export
命令,然后shell将退出。但是export
命令只会更改该shell的$PATH
我不确定,但我怀疑你需要使用
putenv
好吧,只有使用一个简单的命令名来调用
java
命令,它才有帮助使用完整的绝对路径名运行
java
会更简单;e、 g."/absolute/path/to/java/bin/java"