2

Like many others I have problem with shell_exec() function in PHP. I have safe mode disabled and disabled_functions deleted from php.ini.

If I run php script from terminal (php print.php) it's working perfectly but if I run it from web browser nothing happens.

Here is the scipt:

<?php

$output = shell_exec('lp print.php');
echo "<pre>$output</pre>";

?>

Please help me. I'm running PHP 5.3.10 on Apache2. My OS is Ubuntu Server 12.4. Here is the phpinfo page: http://testni-server.info/info.php

4

2 回答 2

1

编程语言 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 用户想要这个补丁,因此创建了这个站点。

于 2012-06-17T14:35:18.410 回答
0

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

于 2012-06-17T14:32:23.413 回答