• 締切済み

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の記述の問題なのか、サーバー側の問題なのか、さすがに困り果てました。 何か情報が不足しておりましたら、ご指摘下さい。 どうぞ宜しくお願いいたします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

書き方がわるかったかもしれませんが ”lha”を絶対パスで指定してみては?・・・という意味です。 見る限りlhaはパス指定していませんよね? たとえば・・・ if (!shell_exec("/usr/local/bin/lha -e ・・・・")){・・・} みたいな感じ

hllwon0025
質問者

お礼

出来ました。 お返事が遅くなって申し訳ありません。 やっと解決できました。 ありがとうございました。

hllwon0025
質問者

補足

OH! ごめんなさい!大変失礼しました。 早速試してみます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

絶対パスで指定してみては?

hllwon0025
質問者

補足

絶対パスで指定しています。

  • honoka69
  • ベストアンサー率50% (6/12)
回答No.1

sh: lha: command not found ってでるとゆーことは、実行してるユーザーだとそのコマンド が見つから無いって言われてるんで、 PHPからはシェルスクリプトを呼び出す処理を書いて そのシェルスクリプトを使って 環境変数を設定して、そのあとlhaコマンドを実行すればいーんじゃ ないですかね? 例えばLinuxってコマンドを実行する時、SSHでコマンドを実行する場合と、 cronとかでコマンドを実行する場合だと実行してるユーザーが変わるので、環境変数にコマンドを入れておかないと、 実行できるコマンドが違うので、 sh: lha: command not found みたいに、コマンドが見つかりませんってゆーエラーが出ると思います。 ※あまりサーバーに詳しくないので、表現が間違ってましたら、誰か訂正してください。

hllwon0025
質問者

お礼

今回はこちらの方法を試すことは無くなりましたが、 また機会がありましたら、宜しくお願いいたします。 ありがとうございました。

hllwon0025
質問者

補足

宜しければ、以下のスクリプトの具体例とか教えていただけないでしょうか? >PHPからはシェルスクリプトを呼び出す処理を書いて >そのシェルスクリプトを使って >環境変数を設定して、そのあとlhaコマンドを実行すればいーんじゃ >ないですかね? 出来ることを一通り試してみたいのです。

関連するQ&A