运行 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
标记
那么是什么导致了这个问题?我尝试使用
使用相同的命令
- 系统
- Shell_exec
- 执行
运气不好。这会是什么原因呢?可能 System/shell_exec
在 OpenBSD 的 Php 或其他版本中不受支持。
提前致谢!
你没有提供足够的信息来给出明确的答案,但是我的
猜测是你 运行 php
到 php-fpm
,默认情况下是 chrooted
至 /var/www
。因为 shell_exec 和系统第一次调用 /bin/sh
而你
很可能没有将它复制到 var/www/bin/sh
它找不到你的 shell。
之后,您还需要将二进制文件(在本例中为 ls)复制到
您的 chroot
和可能的库依赖项(文件不需要
/bin 下)。
希望这有助于说明目的,但请不要在
生产。
我正在尝试 运行 使用 php 5.6
在 OpenBSD shell (uname -r: 6.4
) 上说 ls -l
一个简单的命令。
<?php
$output = shell_exec('ls -l');
echo "<pre>$output</pre>";
?>
以上代码没有输出。检查元素时只需 pre
标记
那么是什么导致了这个问题?我尝试使用
- 系统
- Shell_exec
- 执行
运气不好。这会是什么原因呢?可能 System/shell_exec
在 OpenBSD 的 Php 或其他版本中不受支持。
提前致谢!
你没有提供足够的信息来给出明确的答案,但是我的
猜测是你 运行 php
到 php-fpm
,默认情况下是 chrooted
至 /var/www
。因为 shell_exec 和系统第一次调用 /bin/sh
而你
很可能没有将它复制到 var/www/bin/sh
它找不到你的 shell。
之后,您还需要将二进制文件(在本例中为 ls)复制到
您的 chroot
和可能的库依赖项(文件不需要
/bin 下)。
希望这有助于说明目的,但请不要在 生产。