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);
結果はエラーです: 解凍に失敗したため、シェル ターミナルに移動してコマンドを使用して解凍しましたが、それでもエラーが発生しました
運用保守に問い合わせたところ、ファイル形式がzip形式ではないとのことで、色々な解凍コマンドを試してみたところ、圧縮されていることが判明しました。 .7z 形式のパッケージです。これは、Sogou が少し混乱していると言わざるを得ません。
Windows での解凍ツールは 7z 形式と統合されているため、Windows で解凍してもエラーは報告されません:
問題が見つかったので、解決できます (注: デフォルトでは 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実行エラーの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。