首頁  >  文章  >  後端開發  >  如何解決php exec 報錯問題

如何解決php exec 報錯問題

藏色散人
藏色散人原創
2020-08-20 10:08:143064瀏覽

php exec錯誤的解決方法:先將檔案的使用者改成php使用者;然後修改「exec()」內容為「exec('7za x /home/www/test/filename.csv.7z -r -o./report/sogou/');」即可。

如何解決php exec 報錯問題

推薦:《PHP影片教學

PHP中執行exec遇到的坑(linux權限的坑

坑一 

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

結果錯誤:解壓縮失敗,於是到shell終端用指令解壓縮還是報錯如圖:

#問了維運說是檔案格式不是zip格式的,用了多種解壓縮指令試過之後原來是.7z格式的壓縮包,這就不得不說搜狗比較坑了。

因為windows下的解壓縮工具是整合有7z格式的,所以在window下解壓縮不報錯:

既然找到問題了,就好解決了(注意:centos上預設是沒有p7zip的需要安裝   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/');

記得檔案的使用者權限,因為我在終端機用的是root用戶,修改完檔案權限後,程式執行exec操作檔會報錯沒權限,這是因為php所屬用戶不是root,只需要將檔案的用戶改成php用戶就可以了。

以上是如何解決php exec 報錯問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn