开发模式又称为调试模式,是我们进行程序开发时使用的模式,往往访问量不大,开启错误显示(程序员级别的),可以对错误原因进行追踪,记录详细的错误日志信息以便于程序调试。
生产模式就是我们的网站正式上线了,放到服务器上供网民访问和使用,通常这种模式下会关闭错误显示(程序员级别的),仅记录业务日志信息,错误日志信息通常以.log文件形式记录以供后台排错查看。一、把项目文件放到非WEB目录下此迁移应用于自己的服务器,不适合于虚拟主机!把OneThink项目文件放到非WEB目录下这个操作将有效的提高我们网站程序的安全性,举个最简单的例子:现在在浏览器输入:
http://localhost/Application/Home/Controller/IndexController.class.php出现报错页面:Fatal error: Class 'Home\Controller\HomeController' not found in D:\www\Application\Home\Controller\IndexController.class.php on line 14这说明我们的程序文件是完全暴露在网络环境中的,存在安全隐患。把OneThink项目文件放到非WEB目录下能够消除这个安全隐患。
OneThink的入口文件/index.php中以下的注释说的就是这个意思。
/**
* 应用目录设置
* 安全起见,建议安装调试完成后移动到非WEB目录
*/
define ( 'APP_PATH', './Application/' );具体步骤如下:1、在/Public/目录下新建一个Public子目录,将/Public/目录下的所有子目录和文件移动到/Public/Public/子目录下(这样做,你就可以不用修改无数个模板的Public定义了)
2、将/index.php和/.htaccess文件移动到/Public/目录下,入口文件位置变为:
/Public/index.php
/Public/.htaccess3、修改index.php文件内容/index.php
//开发模式的入口文件s
define('APP_DEBUG', true );
define ( 'APP_PATH', './Application/' );
define ( 'RUNTIME_PATH', './Runtime/' );
require './ThinkPHP/ThinkPHP.php';
//开发模式的入口文件e修改为://路径定义为绝对路径可以提高系统的加载效率(见《TP手册》)/Public/index.php
//生产模式的入口文件s
define('APP_DEBUG',false);
define ( 'APP_PATH', 'D:\\www\Application\\' );
define ( 'RUNTIME_PATH', 'D:\\www\\Runtime\\' );
require 'D:\\www\\Think\\ThinkPHP.php';
//生产模式的入口文件e4、修改httpd.conf(关键的一步)D:\httpd\conf\httpd.conf
将:
DocumentRoot "d:/www"
<Directory "d:/www">修改为:DocumentRoot "d:/www/Public"
<Directory "d:/www/Public">以上修改就是将"d:/www/Public"目录设置为我们的网站根目录,使用我们刚才移动的/Public/index.php入口文件,即可正常访问新网站了,在浏览器中输入:http://localhost/
OK,网站访问一切正常,点击其他页面看看,OK!
5、最后一步,Addons根目录修改:
修改Addon.class.php文件:
\Application\Common\Common\function.php
const ONETHINK_ADDON_PATH = './Addons/';改为:const ONETHINK_ADDON_PATH = '../Addons/';现在看看最终的目录结构:(生产模式下的目录结构)"d:/www"目录下的文件夹和文件:
/Addons
/Application
/Data
/Public
/Runtime
/ThinkPHP
/Uploads
"d:/www"目录下没有文件"d:/www/Public"目录下的文件夹和文件:/Public //我们刚才新建的文件夹
.htaccess
index.php"d:/www/Public/Public"目录下的文件夹和文件:/Admin
/static
/Home
favicon.ico网站访客只能访问"d:/www/Public"网站目录及其子目录下的内容,而其他目录都在"d:/www"目录下,只能由服务器通过程序访问。我们现在再在浏览器输入:
http://localhost/Application/Home/Controller/IndexController.class.php
报404错误,说明网站目录下已不存在此文件,把项目文件放到非WEB目录下就算成功了。
二、将默认模块设为"Home"(此步可减少一级访问级数)
设置前的访问网址:
http://localhost/Home/Article/detail/id/19.html
设置后的访问网址:
http://localhost/Article/detail/id/19.html设置:/ThinkPHP/conf/convention.php//'MODULE_ALLOW_LIST' => array('Admin'),//此种配置,则http://localhost/Home/Article/不可访问,只能唯一使用http://localhost/Article/访问
'MODULE_ALLOW_LIST' => array('Home','Admin'),
'DEFAULT_MODULE' => 'Home', // 默认模块2、将模板文件中的"__CONTROLLER__"或"__URL__"修改为"__SELF__",否则你模板中链接或表单可能会不正常。注意:此种方法解决的也不是太好,可能局部还需要进一步调整。三、其他
其他还有什么需要注意的,欢迎大家补充!
(完)
最佳答案