質問

このphpコードを使用しています:

exec("unrar e file.rar",$ret,$code);

と不正なコマンドのエラーコード、すなわち127を取得します...しかし、sshを介してこのコマンドを使用しているときは...サーバーにunrarがインストールされているため...正しいものですか?

役に立ちましたか?

解決

アプリケーションの直接パス(/ usr / bin / unrarのいずれか)を使用してみてください。phpがアプリケーションを見つけられないようです。

他のヒント

Apacheとphpをchrootした場合は、/ bin / shをchrooted環境に配置することもできます。そうしないと、exec()またはpassthru()が適切に機能せず、エラーコード127、ファイルが見つかりません。

これはグーグルのトップアンサーとして登場するので、修正を共有したいと思いました:

私が持っていた簡単な修正は、php.iniファイルでsafe_modeを無効にすることでした

; Safe Mode
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode
safe_mode = Off

ご回答ありがとうございました!!

これを試しました

//somedir is inside the directory where php file is
chdir("somedir");
exec("/home/username/bin/unrar e /home/path/to/dir/file.rar");

そして今では終了コードを返しませんでした...他のコマンドはファイルを実行しています..mkdirなどを試してみました..:s

他の誰かがこの問題を解決できない場合は、こちらの投稿をご覧ください:

http://gallery.menalto.com/node/2639#comment-8638

引用:

  

問題が見つかりました。問題は、私のセキュリティパラノイドなOpenBSDでした。 3.1から3.2にアップグレードすると、次のように追加されました。

     
      
  • Apacheはデフォルトでchroot'dを実行します。これを無効にするには、新しい-uオプションを参照してください。
  •   
     

chrootにより、Apacheはディレクトリの外部にアクセスできなくなりました。そのため、netpbmを含むすべてをapacheディレクトリに移動しました。すべてがアクセス可能で実行可能でしたが、まだ何らかの「セーフモード」であったと思います。 exec()が常に127を返したためです。

     

とにかく、-uオプションを指定してhttpdを実行すると、安全性の低いchrootされていないApache起動に戻り、exec()が再び動作するようになりました。

ohkiee guyz thanx ...はい

exec("/home/user/bin/unrar e /home/user/xxx/yyy/file.rar");

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top