有没有被wordpress强大的一键安装所折服?

想想自己的PHP代码,修改某config.php(如果有的话)的数据库名,用户名、密码等,换个环境就得从新再来一次,多不友好啊,而且如果遇到没有table没有表名等情况更是如此。。。因为这个问题便有了这篇文章。

只需要简单几步轻松搞定,首先肯定是要有个类似于install.php这样的文件了,然后就是一阵捣鼓就安装完成啦(废话!)

       具体实现需要一些准备,我们需要写个功能,即先检测数据库是否可用,如果不可用就执行安装程序,安装的时候需要用户输入相关参数,然后备份原有配置文件,创建新的配置文件。然后就差不多啦0.0

开始首先检查是否可用,很简单,就按照原有的配置方式连接数据库,也就是默认咱config.php是有内容的

<?php
//数据库设置
//$db_host = '127.0.0.1';
$db_host = '127.0.0.1';
$db_user = 'root';
$db_pswd = 'admin';
$db_name = 'lfzhmb';
?>

差不多就是这个意思,然后开始执行检查,也就是一段连接数据库的功能

  1. $conn = mysql_connect($db_host,$db_user,$db_pswd);   
  2.     if(!$conn){   
  3. ?>   
  4.             <html>   
  5.            <link href="ins.css" rel="stylesheet" type="text/css">   
  6.             <body>   
  7.            <div>   
  8.             <form action="install.php" method="post">   
  9.             <p>当你看到这个消息,说明数据库尚未配置</p>   
  10.             <input type="submit"  value ="开始配置" />   
  11.             </form>   
  12.            </div>   
  13.             </body>   
  14.             </html>   
  15. <?php   
  16.     }else{   
  17.         //echo "连接成功";   
  18.           
  19. mysql_query('SET NAMES UTF8');//数据库编码   
  20. mysql_select_db($db_name,$conn);//选择数据库    
  21. }  

差不多就是这个意思,大家可以自己发挥,然后发现连接失败啦(我一般认为安装完了这里很难出错了- -)

然后需要注意的是判断文件是否可以写,如果不可写的话那也是没法安装的

  1. $files"config.php";   
  2. //判断文件是否可写   
  3.     if (!is_writable($files)){   
  4.         echo "<font color =red>文件不可写!权限不够</font>";   
  5.     }else{   
  6.                  ...   
  7.               }  

OK文件是否可写已经判断了,发现可写 可以继续下一步啦

这里就可以因人而异了,开始需要一丢丢CSS基础或者没有也行,有点html基础画个简单的输入框让用户输入用户名密码等,我做了个简单的:

  1. <html>   
  2.     <head>   
  3.         <title><?echo$lfzh_info ?>安装</title>   
  4.         <meta http-equiv="content-type" content="text/html;charset=UTF-8">   
  5.         <link href="ins.css" rel="stylesheet" type="text/css">   
  6.     </head>   
  7.     <body>   
  8.     <p><?echo $lfzh_info ?>配置</p>   
  9.         <div>   
  10.         <form action="install.php" method="post";id = "install"; >   
  11.         <p>只需轻轻一下,即可完成配置</p>   
  12.         <br>库地址:<input type="text" name="host" /></br>   
  13.         <br>用户名:<input type="text" name="user" /></br>   
  14.         <br>密&nbsp &nbsp码:<input type="password" name="pswd" /></br>   
  15.         <br>库&nbsp &nbsp名:<input type="text" name="name" value ="lfzhmb" /></br>               
  16.             <br><input type="submit" name="next" value ="下一步" /></br>   
  17.         <p>注意:库名请不要随意修改。</p>   
  18.         </form>   
  19.         </div>   
  20.     </body>   
  21. </html> 

这!!不是重点。。。现在是需要把用户的输入重新连接,如果成功0.0说明是对的,不成功就得提示再来一次

现在说成功的(嘿嘿,偷懒)

成功之后就需要备份原有数据文件跟写入新的数据文件啦,就这么愉快的开始了:



  1. $db_hosts = $_POST["host"];   

  2. $db_users = $_POST["user"];   

  3. $db_pswds = $_POST["pswd"];   

  4. $db_names = $_POST["name"];   

  5. //将新的数据库配置信息存入   

  6. $tstrfile_get_contents($file);   

  7. //$c_host=str_replace($db_host ,$db_hosts ,$tstr);//db_host为原有信息   

  8. //迫于无奈出此下策(因str_replace返回的函数内容为一段PHP代码,默认不显示)   

  9. $c_name=str_replace($db_name,$db_names ,   

  10.             str_replace($db_pswd ,$db_pswds ,   

  11.                 str_replace($db_user ,$db_users ,   

  12.                     str_replace($db_host ,$db_hosts ,$tstr))));   

  13. $fp=fopen($file,'w');   

  14. fwrite($fp,$c_name);//写入PHP配置文件   

  15. fclose($fp);  

这里其实有更好的办法,但是我因为需要改写文件而不是重新创建,于是用了这奇葩办法0.0 而且居然有效

str_replace();为替换函数,fopen();fwrite();fclose():文件操作函数

一不小心就完成啦,最后只需要删除掉安装文件即可:

rename("install.php","install.bak");//安全功能,重置安装文件名

我这里选择修改文件后缀,也是一样的道理

一个简单的PHP安装程序就完成啦,突然想到还有两种可能:

第一种就是压根没有库文件

mysql_query("CREATE DATABASE $db_names",$conns) or die('无法创建数据库!');

第二种情况就是  也没有表0.0(真可怜)

  1. Function testtable($dbn,$search_table){   
  2.                     $i=0;   
  3.                     $flag=0;   
  4.                     $result=mysql_list_tables($dbn);   
  5.                         while($i<mysql_num_rows($result)){   
  6.                             if($search_table==mysql_tablename($result,$i)){   
  7.                                 $flag =1;   
  8.                                 break;   
  9.                             }   
  10.                           $i++;   
  11.                          }   
  12.                      return $flag;   
  13.                     }  

现在就已经很健全啦,差不多了

小林子打字好辛苦,麻烦转载注明: 转载自林枫紫涵

本文链接地址: http://www.lfzh.org/myinstall.html

作者: admin