>백엔드 개발 >PHP 튜토리얼 >PHP의 exec() 함수가 시스템 명령을 실행하지 못하는 문제에 대한 해결 방법

PHP의 exec() 함수가 시스템 명령을 실행하지 못하는 문제에 대한 해결 방법

不言
不言앞으로
2019-02-15 11:41:088309검색

이 기사는 PHP의 exec() 함수가 시스템 명령을 실행하지 못하는 문제에 대한 해결책을 제공합니다. 필요한 참고 자료가 있으면 도움이 될 것입니다.

0. 설명

PHP에서는 exec()를 사용하여 시스템 명령을 실행할 수 있지만 때로는 exec() 명령이 실행되지 않거나 아무것도 반환하지 않는 상황이 발생합니다.

1 .함수

exec ( string $command [, array &$output [, int &$return_var ]] ) : string
参数说明:
1.$command   要执行的命令
2.$output  执行结果
3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量

2. 예시

exec("ping www.baidu.com", $output);

일반적으로 실행 결과는 서버에서 직접 ping을 실행하는 것과 동일하지만, 어떤 이유로 인해 예상치 못한 상황이 발생할 수 있습니다. 및 솔루션

2.1 권한 문제

problems

서버에서 Linux 시스템 명령을 직접 실행할 때(여기서는 ping을 예로 들겠습니다), 실행 권한은 로그인한 사용자의 권한에 따라 달라집니다. 로그인한 사용자는 root 이고, 루트는 ping을 실행하는 데 사용됩니다. 하지만 웹 사이트에 접속하면 현재 사용자는 www입니다. ping 실행 권한을 수정하지 않으면 성공적으로 실행되지 않습니다.

해결 방법

ping 또는 해당 명령의 실행 권한을 수정하세요

2.2 명령 경로 문제

Problem

Exec를 사용하여 명령을 실행할 때 오류가 보고되지 않고 결과도 없는 경우가 있습니다. 가 반환되는 이유는 이 명령이 환경 변수가 구성된 디렉터리, 즉 /etc/profile 파일에 없기 때문입니다. ifconfig를 예로 들면 `whereis
ifconfig를 사용하여 특정 내용을 확인할 수 있습니다. 예를 들어 이 명령의 경로는 /usr/sbin` 아래에 있습니다. 두 가지 해결 방법:

Solution

1 명령을 /usr/bin에 복사합니다(권장되지 않음)
2 명령 exec('/usr/sbin',$output)(권장)

위 내용은 PHP의 exec() 함수가 시스템 명령을 실행하지 못하는 문제에 대한 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제