So lösen Sie das PHP-Exec-Fehlerproblem

藏色散人
Freigeben: 2023-03-04 20:10:01
Original
3058 Leute haben es durchsucht

Lösung für PHP-Exec-Fehler: Ändern Sie zuerst den Benutzer der Datei in PHP-Benutzer und ändern Sie dann den Inhalt von „exec()“ in „exec('7za x /home/www/test/filename.csv.7z -r -o ./report/sogou/');" reicht aus.

So lösen Sie das PHP-Exec-Fehlerproblem

Empfohlen: „PHP-Video-Tutorial

Die Fallstricke beim Ausführen von exec in PHP (die Fallstricke von Linux-Berechtigungen)

Pit eins

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

Das Ergebnis ist ein Fehler: de Komprimierung fehlgeschlagen, Wenn ich also zum Shell-Terminal gehe, erhalte ich immer noch eine Fehlermeldung, wenn ich Befehle zum Dekomprimieren verwende, wie in der Abbildung gezeigt:

Ich habe den Betrieb und die Wartung gefragt und sie sagten, dass das Dateiformat kein ZIP-Format sei, nachdem sie verschiedene Dekomprimierungen ausprobiert hatten Befehle, es stellte sich heraus, dass es sich um ein komprimiertes Paket im .7z-Format handelte. Dies ist ziemlich verwirrend. Da das Dekomprimierungstool unter Windows in das 7z-Format integriert ist, wird beim Dekomprimieren unter Windows kein Fehler gemeldet :

Da das Problem nun gefunden wurde, kann es gelöst werden (Hinweis: p7zip ist auf Centos standardmäßig nicht verfügbar). Sie müssen yum install -y p7zip) installieren.

Ändern Sie dann die obige exec() as Folgendes:

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/');
Nach dem Login kopieren

Merken Sie sich die Benutzerberechtigungen der Datei, da ich den Root-Benutzer im Terminal verwende. Nach dem Ändern der Dateiberechtigungen wird das Programm ausgeführt. Wenn exec die Datei ausführt, wird ein Fehler ohne Berechtigungen gemeldet Der Benutzer, zu dem PHP gehört, ist nicht root. Sie müssen nur den Benutzer der Datei in den PHP-Benutzer ändern

Das obige ist der detaillierte Inhalt vonSo lösen Sie das PHP-Exec-Fehlerproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage