繁体   English   中英

shell_exec()和exec()在PHP中不起作用

[英]shell_exec() and exec() not working in PHP

像许多其他应用一样,我在PHP中的shell_exec()函数也遇到了问题。 我禁用了安全模式,并从php.ini中删除了disable_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用户想要此修补程序,因此创建了此站点。

您的命令行(CLI)PHP使用的工作目录和/或路径可能与CGI不同。 在调用shell_exec()之前,尝试使用chdir()显式定义工作目录(包含lp命令shell_exec()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM