Win7 64配置Apache2.4

概述

由于近期的一个项目使用PHP,所以再次捡起PHP。
之前在windows下配置Apache屡试不爽的方法,但这次在win7下配置Apache2.4的时候却失败了,于是越挫越勇!

配置注意事项

配置的时候要注意一下几点:

  1. ServerRoot的目录必须要和Apache的目录是一致的

    如果不一致的话,但你启动Apache服务时会失败,并提示:

    Apache2.4 服务正在启动 .
    Apache2.4 服务无法启动。

    发生服务特定错误: \1.

    请键入 NET HELPMSG 3547 以获得更多的帮助。

    你可以查看Apache的日志,或者你使用httpd.exe启动Apache会得到更详细的异常信息:

    httpd.exe: Syntax error on line 72 of D:/Program Files/Apache24/Apache24/conf/ht
    tpd.conf: Cannot load modules/mod_access_compat.so into server: \xd5\xd2\xb2\xbb
    \xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3

    据说ServerRoot:

    对于apache中ServerRoot的解释基本都是这样的:ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。

  2. Apache2.4的403 Forbidden 异常

    Apache在2.4版本上做了不小的改动,特别是在静态处理方面,对配置参数也做了变动,更多信息可参考:http://httpd.apache.org/docs/trunk/new_features_2_4.html
    之所以在2.4版本会出现403,是因为添加了一个访问限制的Require参数造成的,只要在VIRTUALHOST对应的DIRECTORY里添加Require配置即可。

    Require all granted
    允许所有请求访问资源

    Require all denied
    拒绝所有请求访问资源

    Require env env-var [env-var] …
    当指定环境变量设置时允许访问

    Require method http-method [http-method] …
    允许指定的http请求方法访问资源

    Require expr expression
    当expression返回true时允许访问资源

    Require user userid [userid] …
    允许指定的用户id访问资源

    Require group group-name [group-name] …
    允许指定的组内的用户访问资源

    Require valid-user
    所有有效的用户可访问资源

    Require ip 10 127.0.0.1
    允许指定IP的客户端可访问资源

    Require not group select
    select组内的用户不可访问资源

  3. Warning: date_default_timezone_get()

    由于从PHP5.1开始对时间函数如date等做了改动,如果timezone设置不正确,在每一次调用时间函数时,都会产生E_NOTICE 或者 E_WARNING 信息,而又在php中,date.timezone这个选项,默认情况下是关闭的,异常信息如下:

    Warning: date_default_timezone_get(): It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone. in E:\workspace\PHP\appback\app.manager\app\cache\prod\classes.php on line 6408

    Warning: DateTime::createFromFormat(): It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone. in E:\workspace\PHP\appback\app.manager\app\bootstrap.php.cache on line 1487

    解决:在php.ini里加上找到date.timezone项,设置date.timezone = “Asia/Shanghai”,重启Apache即可。

翟前锋 wechat
欢迎订阅我的微信公众号:zhaiqianfeng!