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 () взаимозаменяемо с тем же результатом.