>백엔드 개발 >PHP 문제 >PHP 실행 오류 문제를 해결하는 방법

PHP 실행 오류 문제를 해결하는 방법

藏色散人
藏色散人원래의
2020-08-20 10:08:143100검색

php exec 오류에 대한 해결 방법: 먼저 파일 사용자를 php 사용자로 변경한 다음 "exec()"의 내용을 "exec('7za x /home/www/test/filename.csv.7z -r)로 수정합니다. -o ./report/sogou/');"이면 충분합니다.

PHP 실행 오류 문제를 해결하는 방법

추천: "PHP 비디오 튜토리얼"

PHP에서 exec를 실행할 때 겪게 되는 함정(Linux 권한의 함정

Pit one)

今天在使用php中的exec()命令,下载搜狗推广数据报表压缩包,解压的时候遇到一个坑,搜狗给了一个链接,在浏览器访问的时候直接下载的是.zip的压缩包,于是使用
//下载压缩包
exec("wget -O /home/www/test/filename.zip 'sougou_url'");//注意url要用单引号包含住
//解压
exec('unzip -o /home/www/test/filename.zip);

결과는 오류입니다: 압축 해제 실패 , 쉘 터미널로 이동하여 압축을 풀기 위한 명령을 사용할 때 그림과 같이 계속 오류가 발생합니다.

운영 및 유지 관리 담당자에게 문의했는데 다양한 시도를 해본 결과 파일 형식이 zip 형식이 아니라고 합니다. 압축 해제 명령을 실행해보니 .7z 형식의 압축 패키지로 밝혀졌습니다. Sogou에 대해 이렇게 말해야 합니다.

Windows의 압축 해제 도구가 7z 형식과 통합되어 있어 압축을 풀 때 오류가 보고되지 않습니다. Windows에서:

이제 문제가 발견되었으므로 해결할 수 있습니다(참고: p7zip은 centos에서 기본적으로 사용할 수 없습니다). yum install -y p7zip을 설치해야 합니다.

그런 다음 위의 exec()를 수정합니다.

exec("wget -O /home/www/test/filename.7z 'sogou_url'");
chmod("./report/sogou/tmp/filename.7z",0777);//此处要给权限否则下一个命令无法执行
exec('7za x /home/www/test/filename.csv.7z -r -o./report/sogou/');

터미널에서 루트 사용자를 사용하기 때문에 파일의 사용자 권한을 기억하십시오. 파일 권한을 수정한 후 프로그램이 실행됩니다. exec가 파일을 작동하면 권한 없음 오류가 보고됩니다. php가 속한 사용자는 루트가 아니기 때문에 해당 파일의 사용자를 php 사용자로 변경하기만 하면 됩니다.

위 내용은 PHP 실행 오류 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.