Linux에서 exec 명령을 실행할 권한이없는 PHP에 대한 솔루션
관련 공식 참조
PHP exec Linux sudoers file Sudo Commandsfastcgi 모드에서 실행할 때 수정
PHP가 fastcgi 모드에서 실행될 때 해당 권한은 호스트 프로그램에서 상속됩니다. 아파치를 예로 들어 설명하겠습니다. 먼저 아파치가 실행되는 계정을 찾은 다음 vi 또는 vim을 사용하여 / etc / sudoers 파일을 편집하고 다음 참조 예제를 파일에 추가해야합니다. 다음 내용에서 먼저 ps 명령을 사용하여 아파치 프로세스 httpd를 찾고 반환 된 결과의 가장 왼쪽에있는 계정 정보를 확인한 다음 sudoers 파일을 편집하여 아파치 계정에 권한을 추가합니다.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
php-fpm 모드에서 실행할 때 수정
php-fpm 모드에서 실행하면 별도의 프로세스로 실행됩니다. 따라서 먼저 실행중인 계정을 찾은 다음 위와 같이 인증 작업을 수행합니다.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
변경 사항이 적용되는지 확인
위의 작업 후 권한을 수정했지만 아직 적용되지 않았습니다. 수정 사항을 적용하려면 서비스를 다시 시작해야합니다. 실제 상황에 따라 apache 또는 php-fpm 서비스를 다시 시작하십시오. 그런 다음 exec 명령을 실행하여 반환 된 결과를 확인하고 반환 된 결과를 정상적으로 얻으면 성공한 것입니다.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);