有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    首先,这是行不通的

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

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

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

    I'm hoping that if I can add absolute/path/to/java/bin to $PATH then this issue will be resolved.

    好吧,只有使用一个简单的命令名来调用java命令,它才有帮助

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