运行 exec()/system() 等命令使用 PHP & OpenBSD

Run exec()/system() etc command using PHP & OpenBSD

我正在尝试 运行 使用 php 5.6 在 OpenBSD shell (uname -r: 6.4) 上说 ls -l 一个简单的命令。

<?php

$output = shell_exec('ls -l');

echo "<pre>$output</pre>";

?>

以上代码没有输出。检查元素时只需 pre 标记 那么是什么导致了这个问题?我尝试使用

使用相同的命令
  1. 系统
  2. Shell_exec
  3. 执行

运气不好。这会是什么原因呢?可能 System/shell_exec 在 OpenBSD 的 Php 或其他版本中不受支持。

提前致谢!

你没有提供足够的信息来给出明确的答案,但是我的 猜测是你 运行 phpphp-fpm,默认情况下是 chrooted 至 /var/www。因为 shell_exec 和系统第一次调用 /bin/sh 而你 很可能没有将它复制到 var/www/bin/sh 它找不到你的 shell。 之后,您还需要将二进制文件(在本例中为 ls)复制到 您的 chroot 和可能的库依赖项(文件不需要 /bin 下)。

希望这有助于说明目的,但请不要在 生产。