★apache的配置文件

◆/usr/local/apache2/conf/httpd.conf

◆/usr/local/apache2/bin/apachectl -l 可以列出所有的static模块,即httpd的内核模块

[root@yue ~]# /usr/local/apache2/bin/apachectl -l
Compiled in modules:
core.c
mod_so.c
http_core.c
event.c 2.0和2.2默认为prefork模式,使用子进程(worker ;2.4默认为event模式)

更改模式:

cd /usr/local/src/httpd-2.2.16

[root@yue httpd-2.2.16]# ./configure --help |grep mpm
--with-mpm=MPM Choose the process model for Apache to use.
MPM={beos|event|worker|prefork|mpmt_os2}

在编译时指明模式即可

◆/usr/local/apache2/bin/apachectl -M 可以列出shared类型的模块

◆/usr/local/apache2/bin/apachectl -t 可以查看语法有没有错误

有错改错,没有错误再重启

◆/usr/local/apache2/bin/apachectl -graceful 可以重新加载配置文件

◆cat /usr/local/apache2/build/config.nice 可以查看编译apache时候的选项

★结合php配置apache

vim /usr/local/apache2/conf/httpd.conf

◆找到:AddType application/x-gzip .gz .tgz
在该行下面添加:AddType application/x-httpd-php .php

◆找到:<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
修改为:<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>

◆找到:#ServerName www.example.com:80
修改为:ServerName localhost:80

★测试解析php

◆编写一个php脚本,命名为1.php

[root@yue httpd-2.2.16]# vim /usr/local/apache2/htdocs/1.php

[root@yue httpd-2.2.16]# cat /usr/local/apache2/htdocs/1.php
<?php
echo baidu.com;
?>

在本地浏览器输入ip地址/1.php

发现虽然php正常解析,但是显示内容为baiducom,脚本中写的.并没有显示。这是因为.在php脚本中是一个连接符,如果想让其真正显示成.需要加上单引号(echo 'baidu.com')

◆phpinfo()可以显示php相关的配置

我们可以看到Loaded Configuration File 显示为(none),这是因为在/usr/local/php/etc下并没有相关配置文件

[root@yue httpd-2.2.16]# ls /usr/local/php/etc
pear.conf

我们可以复制一个,在源码包文件下我们可以过滤一下

[root@yue php-5.3.28]# ls |grep php.ini
php.ini-development <== 测试环境的
php.ini-production <== 生产环境的

[root@yue php-5.3.28]# cp php.ini-production /usr/local/php/etc/php.ini

我们需要重启一下apache,[root@yue php-5.3.28]# /etc/init.d/apachectl restart

刷新网页我们发现已经改变了

◆在命令行下进行测试

[root@yue php-5.3.28]# cd /usr/local/php <== 进入到此目录下

[root@yue php]# /usr/local/php/bin/php -m 可以列出所有加载的模块,都是静态编译进来的

[root@yue php]# /usr/local/php/bin/php -i 可以查看到phpinfo

要想查看配置文件,可以 /usr/local/php/bin/php -i |grep -i 'Configuration File'

[root@yue php]# /usr/local/php/bin/php -i |grep -i 'Configuration File'
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => /usr/local/php/etc/php.ini

[root@yue php]# /usr/local/php/bin/php -v 可以查看版本

[root@yue php]# /usr/local/php/bin/php -i |head 可以查看到php的编译选项

root@yue php]# curl -x192.168.16.100:80 yueyue.com/index.html
<html><body><h2>It works!</h2></body></html>

如果现实php源码,说明php没有正常解析,需要再去检查配置文件

◆无法正常解析时排错方法

/usr/local/php/bin/php -m
查看有没有php5_module模块,如果没有进行第二步

查看ls /usr/local/apache2/modules/libphp5.so 此目录下有没有此文件

如果有此文件但没有第一步中的模块,ldd /usr/local/apache2/modules/libphp5.so

查看是否有问题(是否出现****==> not found),此命令用来查询依赖哪些库文件