shell_exec () и exec () не работают в PHP

Как и многие другие, у меня проблема с функцией shell_exec () в PHP. У меня отключен безопасный режим, а disabled_functions удален из php.ini.

Если я запускаю php-скрипт из терминала (php print.php), он работает отлично, но если я запустил его из веб-браузера, ничего не произойдет.

Вот сценарий:

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

Пожалуйста, помогите мне. Я запускаю PHP 5.3.10 на Apache2. Моя ОС – 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. Попробуйте определить рабочий каталог (содержащий команду lp ) явно с помощью chdir() перед вызовом shell_exec() .