php Webアプリケーションがインストールされ、設定されているかどうかを確認するには?




zend-framework installer (4)

Drupalのインストールスクリプトを例として使用しています...

if ( ! config_file_exists()) {
    tell_user_to_write_config_file();
} elseif ( ! can_connect_to_db()) {
    tell_user_to_fix_config_file();
} elseif ( ! check_db_if_installed() ) {
    do_install_stuff();
} else {
    tell_user_system_installed()
}

明らかに、この魔法はdo_install_stuff()発生します。Drupalの場合、 install_taskという設定テーブル( variable )の行が存在するかどうかをチェックします。 それが最初のシステムをインストールするときに書かれた最後のものである限り、あなたは良いと思うでしょう。

私は私の質問で十分であるとは思えません...まあ、私はZend Frameworkを使ってPHPでCMSを開発しています。 私は素敵なウェブGUIをインストールして、どこかに解凍してアプリケーションをセットアップしたいと思っています...いくつかのCMSやアプリケーションがあれば、単にhttp://のような 'install url' localhost / app / install '

私は同じことをしたいと思いますが、私は誰もそれを設定することはできませんので、私はアプリケーションが設定されているかどうかを判断する方法を探しています。

Unix世界のpidファイルに触発されていますが、InstallStateファイルでも同じことをやっています。 ブール値を内部に書いてチェックしてみるとよいでしょう..

あれについてどう思う ? より良いアイデアはありますか?


Answer #1

私がSam152の答えをアップアップしたにもかかわらず、私は、(実際にコメントに収まらない)さらなる明確化の必要性を感じた。 これらの状況で私が使用する習慣は次のとおりです。

  1. ユーザーにインストーラを実行させます。
  2. 正常に完了すると、何らかの形式のロックファイルを生成します(多くのアプリケーションでは、何も含まれていない 'installer.lock'ファイルが作成されます)。 このファイル存在すると インストーラを 再度 実行して いる ユーザーは停止するはずです。
  3. インストールディレクトリ全体がサーバーから削除されるまで、メインスクリプトが実行されないようにします(セットアップが成功した後でも)。

これは、2つのレベルで安全対策を提供します。 インストーラーが再実行されるのを防ぎます(アプリケーションにとって問題がある場合としない場合があります)。これにより、製品が実行されなくなります。 ロックファイルの存在を使用して、インストールが正常に完了したこと、再インストールする必要がないこと、ディレクトリを削除する必要があることをユーザーに伝えることができます。

シンプルで安全、ソート済み。 :)


Answer #2

現在のところ、多くのWebアプリケーションにはconfig-likeファイルがあり、どこにデータベースのログイン情報などの情報が格納されています。 新しくインストールされたアプリケーションでは、コードは設定ファイルまたはその中にいくつかの変数が存在するかどうかをチェックし、存在しない場合はインストールスクリプトにリダイレクトします。

設定ファイルが存在する場合、同じスクリプトが後で動作しなくなる可能性があります。 また、設定後にインストールスクリプト/フォルダを削除するようにユーザーに指示するのも一般的な方法です。 ファイルが存在する場合、削除を強制するために長さを変えるものもあります。

あなたが望むものをやるための他の方法もありますが、これはオープンソースのWebアプリケーションの中で最も一般的なものです。


Answer #3

データベースのどこかに値を書き込んだり、インストール完了後にファイルを削除したりすることもできます。 多くのソフトウェアは、/ installファイルが完成した後に削除するようユーザーに求めています。 これを強制するには、インストールディレクトリが存在するかどうかをチェックし、スクリプトの残りの部分が実行される前に管理者に削除させることができます。





installer