java - 如何使用 PHP 设置 $PATH?

标签 java php linux path

我的站点托管在共享服务器上,因此我没有 su 访问权限。我需要用 java 运行一段代码,但它在服务器上不可用。所以我弄了一个自解压版的java,放到服务器上我的home目录下。然后我给了 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 中没有添加任何内容,没有给出任何输出,命令返回了一个成功的退出值。是否只是服务器的限制导致我无法正常工作?

最佳答案

首先,这是行不通的。

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 会更简单;例如"/absolute/path/to/java/bin/java"

关于java - 如何使用 PHP 设置 $PATH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22538677/

相关文章:

java - GSSAPI缺陷票

Java简单统计文件中的单词数

php - 使用 Memcached 的 set 方法时看似不可能的 PHP 变量引用行为

linux - CentOS initscript 启动 chroot nginx 问题

Linux Bash 脚本 - 将参数中的小写路径与实际文件系统路径匹配

c++ - Valgrind 在 ATI 上运行 opengl 程序时报告很多错误 - 我应该担心吗?

java - 无法理解 JList

java - 如何从 Hibernate 配置获取数据源

php - 如何限制 PHP 对 DOCUMENT_ROOT 的文件访问

php - GAE 本地 php - Mint linux - 文件存储不工作