【问题标题】:Run exec()/system() etc command using PHP & OpenBSD使用 PHP & OpenBSD 运行 exec()/system() 等命令
【发布时间】:2026-01-26 05:10:01
【问题描述】:

我正在尝试使用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 版本或其他版本中不支持。

提前致谢!

【问题讨论】:

    标签: apache unix php-5.6 openbsd


    【解决方案1】:

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

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

    【讨论】:

    • 哇。谢谢!我还没想过。