本地开发环境与最终运行环境配置同等是有必要的

简单的总结下这几天的工作,从安装系统,到配置环境,完成很顺利,但是配置的环境有差异,由于编码是前人所写,导致出现各种纠结错误。

前事重现:

系统:ubuntu 12.04

首先搭建 php 环境
所谓LAMP:Linux,Apache,Mysql,PHP

安装 Apache2:

sudo apt-get install apache2

安装PHP模块:

sudo apt-get install php5

安装Mysql

sudo apt-get install mysql-server

其他模块安装:

sudo apt-get install libapache2-mod-php5
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo apt-get install php5-gd

开启rewrite伪静态模块

sudo a2enmpd rewrite

该要的组件都有了就开始配置站点环境了,由于是ubuntu系统,创建步骤可能与他人不一样,直接显示shell命令吧,图就不来了。

cd /etc/apache2/sites-available
cp default web
vim web

web文件内容如下:

<VirtualHost *:80>
#需要绑定的域名
ServerName www.tieyou.com
ServerAlias demo.tieyou.com
#管理员邮箱
ServerAdmin hkshadow@demo.com
#网站目录
DocumentRoot "/var/webwork/tieyou/"
#该网站的错误日志
ErrorLog "/var/weblog/tieyou/t.tieyou.com.errors.log"
#该网站的配置日志(如访问)
CustomLog "/var/weblog/tieyou/t.tieyou.com_accesses.log" common
</VirtualHost>

然后退出vim编辑器,生成刚刚创建的站点配置,执行以下命令:

sudo a2ensite web

然后重启apache2即可生效(再增加站点同理):

sudo /etc/init.d/apache2 restart

在Ubuntu上装完Apache后,每次启动apache服务器都会得到如下警告:
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

注意httpd.conf默认是个空文件
解决方法:

cd /etc/apache2
vi httpd.conf

加入以下代码

ServerName localhost

配置好web站点以后,以为一切OK,结果发现不是那样的。各种警告迎刃而来。
php运行时报Use of undefined constant。
解决方法可在php.ini里搜索

vim /etc/php5/apache2/php.ini

在文件里搜索:

error_reporting = E_ALL & ~E_DEPRECATED

在入口php文件增加error_reporting(0)就可彻底解决这个呕血问题。

有关error_reporting()函数:
error_reporting() 设置 PHP 的报错级别并返回当前级别。

; 错误报告是按位的。或者将数字加起来得到想要的错误报告等级。  
; E_ALL - 所有的错误和警告  
; E_ERROR - 致命性运行时错  
; E_WARNING - 运行时警告(非致命性错)  
; E_PARSE - 编译时解析错误  
; E_NOTICE - 运行时提醒(这些经常是是你的代码的bug引起的,  

;也可能是有意的行为造成的。(如:基于未初始化的变量自动初始化为一个  
              ;空字符串的事实而使用一个未初始化的变量)  

; E_CORE_ERROR - 发生于PHP启动时初始化过程中的致命错误  
; E_CORE_WARNING - 发生于PHP启动时初始化过程中的警告(非致命性错)  
; E_COMPILE_ERROR - 编译时致命性错  
; E_COMPILE_WARNING - 编译时警告(非致命性错)  
; E_USER_ERROR - 用户产生的出错消息  
; E_USER_WARNING - 用户产生的警告消息  
; E_USER_NOTICE - 用户产生的提醒消息  

由此可见,开发环境和最终运行环境最好是一样,不然很多悲催的事情发生,需要亡数次修改和调试。到此,开发环境就绪。

附:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = “zh_CN:zh”,
LC_ALL = (unset),
LC_PAPER = “zh_CN”,
LC_ADDRESS = “zh_CN”,
LC_MONETARY = “zh_CN”,
LC_NUMERIC = “zh_CN”,
LC_TELEPHONE = “zh_CN”,
LC_IDENTIFICATION = “zh_CN”,
LC_MEASUREMENT = “zh_CN”,
LC_TIME = “zh_CN”,
LC_NAME = “zh_CN”,
LANG = “zh_CN.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).
解决办法:
append following settings in the end of /home/your-login/.bashrc

vi /root/.bashrc

再最底部加上

export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C

然后执行一下:

source /root/.bashrc 

看问题描述,似乎是locale的问题,但从解决办法来看似乎与locale没什么关系。。。