2014-12-27 3 views
1
터미널

에서 확인 작동하지 :간부() PHP 내가 내 PHP 파일에서 다음을 수행하려고 브라우저에서 작동하지만

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

I (0) {}

내가 실행하면 배열을 얻을 php file.php 그것이 작동하는 터미널에.

제가

exec("whoami", $result); 

I를 실행하는 경우는 단말의 브라우저 어레이 ([0] => DAO)의 배열 ([0] => 데몬)를 얻는다. dao = 내 사용자.

내가 제공해야하는 권한과 제공 방법을 알 수 없습니다.

감사합니다.

+0

웹 서버 사용자 (예 : www-data for 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

관련 문제