2014-12-27 3 views
1

Я пытаюсь сделать следующее в моем PHP файл:Exec() PHP не работает в браузере, но работает нормально в терминале

exec("java -jar /Applications/XAMPP/htdocs/Web/SimpleEncryption.jar hola", $output); 

Я получаю массив (0) {}

Если я исполняю php file.php в терминале работает.

Если я бегу

exec("whoami", $result); 

Я получаю Array ([0] => демон) в браузере и Array ([0] => дао) в терминале. dao = мой пользователь.

Я не знаю, какие разрешения я должен дать и как их предоставить.

Благодаря

+0

Пользователь веб-сервера (например, www-data для apache) не имеет прав на выполнение команд оболочки. – Tyr

+0

Убедитесь, что пользователь 'daemon' знает, где найти' java'. – axiac

+0

'java', вероятно, не находится в' $ PATH 'веб-сервера. Используйте полный путь к команде. – Barmar

ответ

1

Это, вероятно, что имя пользователя процесса PHP-сервера не является вашим именем пользователя. Когда вы запустите его с терминала, вы вошли в систему как dao, но процесс php, обслуживаемый вашим веб-сервером, находится под другим именем пользователя. Если вы используете php-fpm, имя пользователя указывается в файле conf.

+0

Я использую XAMPP, где находится файл конфигурации? – user3171362

+0

Теперь у меня тот же ответ whoami в браузере и в терминале ... но все равно не работает. – user3171362

+0

В зависимости от версии php, используемой вами (<5.3, я думаю), вам может потребоваться отключить безопасный режим. http://stackoverflow.com/questions/24999673/how-to-enable-shell-exec-and-exec-on-php. Или вам нужно удалить exec из списка удаленных функций. Http://www.cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/ – bspates

Смежные вопросы