001thinkphp开发环境搭建
Posted 陈三
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了001thinkphp开发环境搭建相关的知识,希望对你有一定的参考价值。
thinkphp3.1(包括3.1)需要PHP5.2(包括5.2)以下的版本,如果是5.3(包括5.3)以上的版本会导致mysql语句出错。
thinkphp3.2 必须用PHP5.3(包括5.3)以上的版本(注意:PHP5.3dev版本和PHP6均不支持),要不然无法运行
基于ThinkPHP3.2学习,请参考:http://document.thinkphp.cn/manual_3_2.html
本文档只是针对于看ThinkPHP3.2文档产生的问题,针对问题去逐一解决应该也就没什么问题了。基本配置就不加以赘述。
1.下载phpstudy进行安装,安装的时候如果已经安装过了mysql,则去掉勾选项。
其它步骤不用管,安装完成启动phpstudy,浏览器中输入localhost,进入php探针页面;--phpstudy安装成功;
2.将下载的ThinkPHP3.2.2核心版本将解压的ThinkPHP_3.2.2_full改为自己的项目名称,放入WWW下;
启动服务器,浏览器输入:localhost/项目名称;
在第一次访问应用入口文件的时候,会显示如图所示的默认的欢迎页面,并在Application(应用目录)下自动生成了一个默认的应用模块Home。
默认ThinkPHP是有个Application的空文件夹的,即使没有,在第一次访问的时候也会自动创建;但Public不会自动创建,因为在入口文件中并未定义;
Rutime如果再入口文件有定义也会自动生成对应文件夹;
则php程序部署成功;
问题1:如何不让输入ip或者域名就进入探针页面?
删除l.php和phpinfo.php,这样不是好的解决办法;访问localhost或者ip就可以看到程序的目录,phpMyAdmin是mysql的一个网页版客户端;
对于开发人员或者管理员,l.php、phpinfo.php和phpMyAdmin还是有用的,怎么让其他用户或者ip不能访问呢?
不允许访问目录列表只是用户不能浏览程序目录;但如果用户知道程序目录还是可以访问任何一个程序页面,那么安全问题需要考虑;
为什么服务器允许访问目录列表(开启了目录浏览权限)可以直接在浏览器输入URL地址查看目录?
在自动生成目录结构的同时,在各个目录下面我们还看到了index.html文件,这是ThinkPHP自动生成的目录安全文件。
为了避免某些服务器开启了目录浏览权限后可以直接在浏览器输入URL地址查看目录,系统默认开启了目录安全文件机制,会在自动生成目录的时候生成空白的index.html
文件,当然安全文件的名称可以设置,例如你想给安全文件定义为default.html
可以在入口文件中添加:
define(\'DIR_SECURE_FILENAME\', \'default.html\');
define(\'APP_PATH\',\'./Application/\');
require \'./ThinkPHP/ThinkPHP.php\';
实际应为:
define(\'DIR_SECURE_FILENAME\', \'index.html\');
define(\'APP_PATH\',\'./Application/\');
require \'./ThinkPHP/ThinkPHP.php\';
因define(\'DIR_SECURE_FILENAME\', \'default.html\');在生成的文件夹中都有生成default.html,可是仍然可以访问服务器的应用程序目录,换成index.html才能真正起效果。那么那里定义了安全目录为index.html?
Application下有Common和Home两个文件夹,文件夹下的每层目录均有加index.html,但Application根目录(Common和Home的同级目录)没有index.html目录安全文件,需要手动添加;
如果你的环境足够安全,不希望生成目录安全文件,可以在入口文件里面关闭目录安全文件的生成,例如:
define(\'BUILD_DIR_SECURE\', false);
或者不设置define(\'DIR_SECURE_FILENAME\', \'index.html\');
只要入口文件有define(\'BUILD_DIR_SECURE\', false);
不论是否设置define(\'DIR_SECURE_FILENAME\', \'index.html\');都不会生成目录安全文件;
其实加安全目录文件只是目录文件不能通过浏览器URL访问某目录后是访问的该目录下的index.html文件,访问服务器某目录该目录下的文件和文件夹不会直接列举出来供点击访问(只是让用户不能通过浏览器URL访问看到程序目录);但如果用户知道程序目录还是可以直接输入某具体文件的URL,仍可以访问资源;文件权限没加以控制?
问题2:程序入口,在哪定义?
主要是由服务器设置的。
入口文件index.php中define(\'APP_PATH\',\'./Application/\');可对APP_PATH进行自定义,设置应用目录define(\'APP_PATH\',\'./App/\');那么第一次访问时,项目下ThinkPHP同级目录生成App文件夹而不是Application;
index.php中加define ( \'RUNTIME_PATH\',\'./Runtime/\');缓存目录的作用,Application下的Runtime呢?
入口文件中还可以定义一些系统变量,用于相关的绑定操作(通常用于多个入口的情况),这个会在后面涉及,暂且不提。何为多入口,该怎么设置?
2.为什么访问localhost/项目名可以访问 localhost/项目/Home/Controller/IndexController.class.php?
答:见ThinkPHP/Conf/convention.php,为框架内的惯例配置文件(惯例配置即框架的约定配置),一般不建议直接修改;
\'DEFAULT_MODULE\' => \'Home\', // 默认模块
\'DEFAULT_C_LAYER\' => \'Controller\', // 默认的控制器层名称
\'DEFAULT_CONTROLLER\' => \'Index\', // 默认控制器名称
\'DEFAULT_ACTION\' => \'index\', // 默认操作名称
问题来了Index怎么对应到IndexController的,Controller的后缀.class.php怎么设置的?
ThinkPHP3.2.2在项目下有.htaccess文件,将URL模式的默认PATHINFO模式改为REWRITE模式;
URL模式作用不想解释
http://serverName/index.php http://serverName/index.php/Home/Index/index
该REWRITE模式则省去了中间的index.php;请注意兼容模式和REWRITE的细微区别;
按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。
建议仔细阅读下系统的惯例配置文件中的相关配置参数,了解下系统默认的配置参数。
3.进行系统搭建,连接数据库请参考 http://www.thinkphp.cn/info/494.html
在Home模块的IndexController下添加以下方法进行数据库连接测试
public function testconn(){ //测试数据库连接 $User = M("sys_user")->select(); echo \'userName:\'.$User[0][\'name\']; $user=M(\'sys_user\'); $list=$user->find(); dump($list); }
访问该方法有数据时,则数据库连接成功
userName:陈三
array(4) {
["id"] => string(1) "1"
["name"] => string(6) "陈三"
["login_code"] => string(7) "chensan"
["login_pwd"] => string(6) "123456"
}
应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(默认位于Application/Common/Conf/config.php
)。应用配置文件默认生成的config.php是一个空数组;
如果更改了公共模块的名称的话,公共配置文件的位置也相应改变
3.前台文件怎么调用到后台进行数据交互,后台又是怎么转到前台?
以上是关于001thinkphp开发环境搭建的主要内容,如果未能解决你的问题,请参考以下文章