bash — PHP shell_exec () ведет себя иначе, чем терминальная командная строка MacOS

Scanline — это простая утилита командной строки, используемая для сканирования документов со сканера twain. http://blog.scottkleper.com/scanline-command-line-scanner-for-mac/

Я пытаюсь использовать Scanline через скрипт PHP с помощью shell_exec (); так же, как я бы использовал его прямо из терминала в MacOS.

Когда я запускаю Scanline прямо из командной строки, он обнаруживает все подключенные сканеры и распечатывает их ./scanline -list

Когда я запускаю Scanline с помощью shell_exec (), он не обнаруживает никаких устройств.

До сих пор я изменил пользователя apache на моего локального пользователя и добавил локального пользователя в файл sudoers. Если я запускаю ‘whoami’ в shell_exec (), это тот же результат, что и при запуске в командной строке.

Я напечатал среду, используя printenv в командной строке и настройте все те же переменные в моем php-скрипте перед выполнением shell_exec () с помощью putenv (); Если я запускаю shell_exec (‘printenv 2>&1 ‘), это точно такая же среда, в которой я запускаю printenv из командной строки.

Все разрешения правильные и разрешают доступ, и scanline запускается при выполнении через shell_exec () без ошибок (я проверил журналы ошибок apache, а также поставил error_reporting(E_ALL); в верхней части файла PHP, чтобы распечатать все проблемы по пути). Единственное различие в том, как выполняется программа, состоит в том, что в командной строке устройства обнаруживаются, и через shell_exec () устройства не обнаруживаются.

Любые идеи относительно того, что еще я мог бы пропустить между командной строкой и использованием shell_exec ()?

Я также попытался использовать system (), exec () и shell_exec () взаимозаменяемо с тем же результатом.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]