- 締切済み
PHPからlhaコマンドを使いたい
こんにちは、Linux初級です。 PHPからlhaコマンドが使えなくて困っています。 実は他の掲示板でも質問しているのですが、私が初級ということもあってか(?)、途中で途切れてしまっています。 何とか、解決までおつきあいいただけないでしょうか? 以下、現状です。 ・サーバーはCentOS5.2で、lhaは自力でインストール ・SSHからのlhaコマンド実行は問題無し SSHで実行したコマンド "lha efiw=絶対パス 絶対パス/対象圧縮ファイル" //問題無く解凍できました。 ・サーバーレンタル会社へ質問するもサポート外との返事 ただし、PHPの実行ユーザーで動くはずだと思う・・・との事 ・PHP実行時のhttpd.confのエラーログは"sh: lha: command not found" それで、PHPの処理の流れは、アップロードされたlzh圧縮ファイルを解凍するというものです。 if (!shell_exec("lha -e '絶対パス' '絶対パス/$up_file'")) { exit("解凍できません!"); } とか、 if (!system('lha efiw=絶対パス 絶対パス/$up_file')) { exit("解凍できません!"); } とか、-eをeやxに変えたりといろいろやってみましたが、結果は全て"解凍できません!"となります。 ちなみに、zipファイルは解凍できますので、セーフモードでは無いようです。 shell_exec("unzip -j '{絶対パス}$up_file' -d '{絶対パス}'"); //これはOK また、絶対パスはzipの方で確認していますので、間違いありません。 PHPの記述の問題なのか、サーバー側の問題なのか、さすがに困り果てました。 何か情報が不足しておりましたら、ご指摘下さい。 どうぞ宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
書き方がわるかったかもしれませんが ”lha”を絶対パスで指定してみては?・・・という意味です。 見る限りlhaはパス指定していませんよね? たとえば・・・ if (!shell_exec("/usr/local/bin/lha -e ・・・・")){・・・} みたいな感じ
- yambejp
- ベストアンサー率51% (3827/7415)
絶対パスで指定してみては?
補足
絶対パスで指定しています。
- honoka69
- ベストアンサー率50% (6/12)
sh: lha: command not found ってでるとゆーことは、実行してるユーザーだとそのコマンド が見つから無いって言われてるんで、 PHPからはシェルスクリプトを呼び出す処理を書いて そのシェルスクリプトを使って 環境変数を設定して、そのあとlhaコマンドを実行すればいーんじゃ ないですかね? 例えばLinuxってコマンドを実行する時、SSHでコマンドを実行する場合と、 cronとかでコマンドを実行する場合だと実行してるユーザーが変わるので、環境変数にコマンドを入れておかないと、 実行できるコマンドが違うので、 sh: lha: command not found みたいに、コマンドが見つかりませんってゆーエラーが出ると思います。 ※あまりサーバーに詳しくないので、表現が間違ってましたら、誰か訂正してください。
お礼
今回はこちらの方法を試すことは無くなりましたが、 また機会がありましたら、宜しくお願いいたします。 ありがとうございました。
補足
宜しければ、以下のスクリプトの具体例とか教えていただけないでしょうか? >PHPからはシェルスクリプトを呼び出す処理を書いて >そのシェルスクリプトを使って >環境変数を設定して、そのあとlhaコマンドを実行すればいーんじゃ >ないですかね? 出来ることを一通り試してみたいのです。
お礼
出来ました。 お返事が遅くなって申し訳ありません。 やっと解決できました。 ありがとうございました。
補足
OH! ごめんなさい!大変失礼しました。 早速試してみます。