dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

書き方がわるかったかもしれませんが


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

この回答への補足

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

補足日時:2008/12/22 14:59
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/22 18:00

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

この回答への補足

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

補足日時:2008/12/22 14:15
    • good
    • 0

sh: lha: command not found


ってでるとゆーことは、実行してるユーザーだとそのコマンド

が見つから無いって言われてるんで、

PHPからはシェルスクリプトを呼び出す処理を書いて

そのシェルスクリプトを使って

環境変数を設定して、そのあとlhaコマンドを実行すればいーんじゃ

ないですかね?

例えばLinuxってコマンドを実行する時、SSHでコマンドを実行する場合と、

cronとかでコマンドを実行する場合だと実行してるユーザーが変わるので、環境変数にコマンドを入れておかないと、

実行できるコマンドが違うので、

sh: lha: command not found

みたいに、コマンドが見つかりませんってゆーエラーが出ると思います。

※あまりサーバーに詳しくないので、表現が間違ってましたら、誰か訂正してください。

この回答への補足

宜しければ、以下のスクリプトの具体例とか教えていただけないでしょうか?

>PHPからはシェルスクリプトを呼び出す処理を書いて
>そのシェルスクリプトを使って
>環境変数を設定して、そのあとlhaコマンドを実行すればいーんじゃ
>ないですかね?

出来ることを一通り試してみたいのです。

補足日時:2008/12/22 14:21
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/22 18:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!