像许多其他人一样,我对 PHP 中的 shell_exec() 函数有疑问。我已禁用安全模式并从 php.ini 中删除了disabled_functions。
如果我从终端(php print.php)运行 php 脚本,它工作正常,但如果我从 Web 浏览器运行它,什么也不会发生。
这是脚本:
<?php
$output = shell_exec('lp print.php');
echo "<pre>$output</pre>";
?>
请帮我。我在 Apache2 上运行 PHP 5.3.10。我的操作系统是 Ubuntu Server 12.4。这是 phpinfo 页面:http://testni-server.info/info.php
编程语言 PHP 允许通过配置指令 safe_mode_exec_dir 限制外部命令的执行。该指令应包含包含 PHP 脚本可以运行的程序的目录的完整路径。如果脚本尝试执行不位于此目录中的命令,则不会执行该命令。仅当启用安全模式时,此配置指令才处于活动状态,这意味着对用户有更多甚至有时是不必要的限制。 PHP 没有已知的可能性来限制禁用安全模式的外部命令的执行。因此,这是一个将特殊指令 exec_dir 直接添加到 PHP 中的补丁。该指令与 safe_mode_exec_dir 非常相似,但不必启用安全模式。
此补丁限制或纠正这些函数的行为:
exec()
passthru()
proc_open()
shell_exec()
system()
popen()
is_executable()
创建该补丁的目的是限制用户在多域 apache 服务器上执行外部命令,首先是针对 PHP 版本 4.2.1。该补丁被发送给 PHP 开发人员,因此它可以成为 PHP 的一部分,但没有一个 PHP 开发人员对此感兴趣。另一方面,一些 PHP 用户想要这个补丁,因此创建了这个网站。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)