我不确定是否满足于我的问题...... 我正在使用Zend Framework在PHP中开发CMS。 我希望有一个很好的web gui安装和设置应用程序后解压缩它... 某些CMS或任何应用程序,只需输入“安装网址”,例如“http://localhost/app/install”
即可提供此方法我想做同样的事情,但我不想让任何用户进行设置,所以我正在寻找一种方法来确定应用程序是否已经设置或没有。
受到unix世界中的pid文件的启发,我对InstallState文件做了同样的事情。 在里面写任何布尔值,然后检查可能是一个想法..
你怎么看?你有更好的想法吗?
答案 0 :(得分:5)
虽然我对Sam152的回答表示赞同,但我觉得有必要进一步澄清(这不太符合评论)。我在这些情况下使用的做法如下:
这提供了两个级别的保护措施。它会阻止安装程序再次运行(这可能是您的应用程序可能存在问题,也可能不是问题),并且会阻止产品运行。您可以使用锁定文件的存在来告诉用户他们已经成功完成安装,他们不需要再次安装,并且他们应该删除目录。
简单,安全,有序。 :)
答案 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
)中行的存在。只要这是你进行初始系统安装时写的最后一件事,你就可以了。