php exec錯誤的解決方法:先將檔案的使用者改成php使用者;然後修改「exec()」內容為「exec('7za x /home/www/test/filename.csv.7z -r -o./report/sogou/');」即可。
推薦:《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中文網其他相關文章!