【问题标题】:exec() PHP not working in browser but working ok in terminalexec() PHP 不能在浏览器中工作,但在终端中工作正常
【发布时间】:2014-12-27 23:55:31
【问题描述】:

我正在尝试在我的 php 文件中执行以下操作:

exec("java -jar /Applications/XAMPP/htdocs/Web/SimpleEncryption.jar hola", $output);

我得到数组(0){}

如果我在终端中执行 php file.php 就可以了。

如果我跑了

exec("whoami", $result);

我在浏览器中得到 Array ( [0] => daemon ),在终端中得到 Array ( [0] => dao )。 dao=我的用户。

我不知道我必须授予什么权限以及如何授予它们。

谢谢

【问题讨论】:

  • 网络服务器用户(例如 apache 的 www-data)没有执行 shell 命令的权限。
  • 确保用户daemon知道在哪里可以找到java
  • java 可能不在网络服务器的$PATH 中。使用命令的完整路径。
  • 谢谢,我添加了 java 的路径...现在我收到以下错误:VM 初始化期间发生错误" [1]=> string(45) "无法加载本机库:libjava .jnilib 有人在另一篇帖子中说: exec('export DYLD_LIBRARY_PATH=""; /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -version');但它没有用。你现在怎么解决呢?我正在使用 MAC

标签: php exec


【解决方案1】:

很可能是php服务器进程的用户名不是你的用户名。当您从终端运行它时,您以 dao 身份登录,但您的网络服务器提供的 php 进程使用不同的用户名。如果您使用的是 php-fpm,则用户名在 conf 文件中指定。

【讨论】:

  • 我用的是XAMPP,配置文件在哪里?
  • 现在我在浏览器和终端中都有相同的 whoami 答案......但仍然不起作用。
  • 根据您使用的 php 版本(我认为 stackoverflow.com/questions/24999673/…。或者您需要从已删除函数列表中删除 exec cyberciti.biz/faq/…
  • 我在 php.ini 中都做了 safe_mode=Off disable_functions=""
  • 浏览器中echo shell_exec("java -version");的输出是什么?
猜你喜欢
  • 2018-11-23
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2022-06-29
  • 2022-06-13
  • 2014-03-27
相关资源
最近更新 更多