2011-06-22 18 views
2

Debianパッケージが本番サーバにインストールされているかどうかを知りたい場合、機能はちょうどextension_loaded()のようになります。PHP - Debianパッケージが存在するかどうかを確認する

誰も方法を提案できますか?私はexec()を使用し、 'コマンドが見つかりません'の戻り値を解析する必要があると仮定することができますが、より安全で優れたオプションがあるかどうかを知りたいと思います。

答えて

2

あなたはEXECコマンドへのアクセス権を持っている場合は、次のいずれかを使用できます:あなたは、このためのシンプルなAPIを書くことができ

whereis packagename 

apt-cache policy packagename 
+0

私は本当に 'exec'にアクセスできます。私の方法の代わりに' whereis'を使うのは、誰かが何とかして 'shutdown -h 0'がチェックされていれば、サーバが死ぬだろうということです。ありがとう! –

2

を。それは次のような何かをする必要があります。

  • PHPは、必要なパッケージをxmlファイル、テキストファイル、またはデータベースに書き込めます。シェルアプリケーション、perlアプリケーションなどで読み取れるものは何でも書き込めます。
  • サーバーレベルで、ファイルdatabaseを読み込み、パッケージが存在するかどうかを確認し、出力ファイル、データベーステーブルなどの値を返します。

上記提案された解決策の欠点は、例えば、いくつかの時間がかかることであるPHPで出力ファイルを読み出して、ユーザーにそれを示しています。リアルタイムでパッケージの可用性をチェックすることはできません。もしそれが実際に必須であれば、入力を全く受けないPHPスクリプトを書くことができますが、値が広範にテストされたデータベースやテキストファイルから検査すべきパッケージを読み込みます。正規表現を使ってこのようにして、悪意のあるユーザーがシェルコマンドを注入できないことが確実になります。

+0

あなたの答え、確かに有効な方法、多くのありがとう、この場合は、即時の応答が優先です。 +1 –

関連する問題