Java 如何使用PHP设置$PATH?

Java 如何使用PHP设置$PATH?,java,php,linux,path,Java,Php,Linux,Path,我的站点托管在共享服务器上,因此我没有su访问权限。我需要用java运行一段代码,但它在服务器上不可用。所以我得到了一个自解压版本的java,并把它放在我的主目录中的服务器上。然后我将可执行权限授予java,并尝试运行代码。由于服务器的限制,我在运行文件时必须使用相对路径 尝试运行java文件。/java/bin/java-jar'javafile.jar'会提供以下信息: error while loading shared libraries: libjli.so: cannot open

我的站点托管在共享服务器上,因此我没有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(\uuuuu FILE\uuuu)
来获取我的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);
它将使用shell启动一个子进程,在shell中运行
export
命令,然后shell将退出。但是,
export
命令仅更改该shell的
$PATH

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

我希望如果我能将absolute/path/to/java/bin添加到$path,那么这个问题就会得到解决

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


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

尝试
dirname(realpath(\uuu FILE\uuuuuuuu))
@ciangalagher-
dirname(\uu FILE\uuuuuuuuuuuuuuuuuuuuu)
给出的结果与
dirname(realpath(\uuu FILE\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuo)相同)(很可能是因为您可能无法访问
ex
出于安全原因,99%的共享主机提供商不会让您访问其中任何一项功能。如果您想要访问,我会考虑使用VPS。我使用的最好的服务是亚马逊AWS,他们有一个免费的层,您可以在这里使用:除此之外,我永远不会相信共享主机提供商会给您访问权限这些功能也是如此。@CianGallagher-我同意。我计划一旦网站投入生产,就转移到亚马逊。不过在这里开发对我来说更便宜。=)我没有意识到exec产生了一个子进程$这条路在那里走得很好。我可以在同一个exec调用期间重新编写代码来运行java命令。作为补充说明,
putenv
也不起作用。