如何确定是否已安装和设置Web应用程序?

时间:2009-05-09 18:05:22

标签: php zend-framework installer

我不确定是否满足于我的问题...... 我正在使用Zend Framework在PHP中开发CMS。 我希望有一个很好的web gui安装和设置应用程序后解压缩它... 某些CMS或任何应用程序,只需输入“安装网址”,例如“http://localhost/app/install

即可提供此方法

我想做同样的事情,但我不想让任何用户进行设置,所以我正在寻找一种方法来确定应用程序是否已经设置或没有。

受到unix世界中的pid文件的启发,我对InstallState文件做了同样的事情。 在里面写任何布尔值,然后检查可能是一个想法..

你怎么看?你有更好的想法吗?

4 个答案:

答案 0 :(得分:5)

虽然我对Sam152的回答表示赞同,但我觉得有必要进一步澄清(这不太符合评论)。我在这些情况下使用的做法如下:

  1. 让用户运行安装程序。
  2. 成功完成后,生成某种形式的锁文件(许多应用程序只创建一个'installer.lock'文件,其中没有任何内容)。此文件的存在应该会阻止用户再次运行 安装程序
  3. 防止主脚本执行(即使设置成功后),直到从服务器中删除整个安装目录
  4. 这提供了两个级别的保护措施。它会阻止安装程序再次运行(这可能是您的应用程序可能存在问题,也可能不是问题),并且会阻止产品运行。您可以使用锁定文件的存在来告诉用户他们已经成功完成安装,他们不需要再次安装,并且他们应该删除目录。

    简单,安全,有序。 :)

答案 1 :(得分:1)

您可以在某处编写数据库值,或者只是在安装完成后将文件自行删除。许多软件要求用户在完成后删除/ install文件。要强制执行此操作,您可以检查安装目录是否存在,并让管理员删除它,然后才能运行其余脚本。

答案 2 :(得分:0)

目前很多Web应用程序在某处都有类似配置的文件,它们存储数据库登录信息等内容。在新安装的应用程序上,代码可能会检查是否存在配置文件或其中的某些变量,如果它不存在,则重定向到安装脚本。

如果配置文件存在,相同的脚本以后可能会拒绝工作。此外,通常的做法是告诉用户在设置后删除安装脚本/文件夹。如果文件存在,有些人甚至会根据不工作强制删除。

还有其他方法可以做你想要的,但我发现这是开源网络应用程序中最常见的。

答案 3 :(得分:0)

以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的情况下,它检查名为variable的设置表(install_task)中行的存在。只要这是你进行初始系统安装时写的最后一件事,你就可以了。