1 apahe 以动态模块的方法调用php解析脚步
编译php 指定
--with-apxs2=/usr/local/apache/bin/apxs 选项(其中apxs是apache安装后 在bin目录下生成的一个可执行程序)
注意测试不在需要指定--enable-fpm选项
最后会生成一个libphp5.so 这种方式是将php编译成一个 php内置模块
方法1
http.conf配置添加
PHPINIDir=".../php.ini"
LoadModule php5_module modules/libphp5.so 则是编译php生成的动态库
容器中添加以下方法
AddType application/x-httpd-php .php
方法2
SetHandler application/x-httpd-php
方法3:
容器中添加以下方法
AddHandler php5-script .php
方法4
SetHandler php5-script
注意上面的php5-script在很多网上 被说成cgi-script是有问题的 暂时还未研究清楚
最后注意一下 需要配置PHPINIDir 配置成 php.ini 文件全路径目录 例如 /home/work/php.ini
安装Apache2.2.21#tar -zxvf httpd-2.2.21.tar.gz
# cd httpd-2.2.21
# ./configure--prefix=/usr/local/apache
# make
# sudo make install
在httpd.conf文件中添加(或修改): ServerName 127.0.0.1启动Apache服务#/usr/local/apache/bin/apachectl start
关闭Apache服务#/usr/local/apache/bin/apachectl stop
重启Apache服务#/usr/local/apache/bin/apachectl restart
安装libxml2(安装php需要libxml2做支持,所以需要先安装libxml2)#tar -zxvf libxml2-2.6.32.tar.gz
# cd libxml2-2.6.32
#./configure --prefix=/usr/local/libxml2
# make
# sudo makeinstall
3.安装PHP5.2.6#tar -zxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure--prefix=/usr/local/php
--with-libxml-dir=/usr/local/libxml2
--with-apxs2=/usr/local/apache/bin/apxs
#make
# sudo make install
# cp php.ini-dist /usr/local/php/lib/php.ini
4.配置Apache服务的httpd.conf文件*在LoadModule处添加LoadModule php5_module module/libphp5.so
*在AddTypeapplication处添加AddType application/x-httpd-php .php
#/usr/local/apache/bin/apachectl restart
重启apache如果出现httpd:Syntax error on line 53 of /usr/devsoft/apache/conf/httpd.conf:Cannot load /usr/devsoft/apache/modules/libphp5.so into server:/usr/devsoft/apache/modules/libphp5.so: undefined symbol:sqlite3ExprDelete报这种错误一般是编译、链接出错,应该是不需要sqlite的.所以需要重新编译php,./configure时加--without-sqlite--without-pdo-sqlite
2 php-cgi模式
其中php-cgi 直接拷贝php安装生成的php-cgi 无需要编译php 生成libphp5.so
Action application/x-httpd-php /cgi-bin/php-cgi
3 php-fpm方式
ServerAdmin pengzhi@baidu.com
DocumentRoot "/home/users/pengzhi/.jumbo/srv/http/ask18001"
ServerName cq01-rdqa-dev059.cq01.baidu.com
ErrorLog "/home/users/pengzhi/.jumbo/var/log/httpd/ask18001-error-log"
CustomLog "/home/users/pengzhi/.jumbo/var/log/httpd/ask18001-access-log" common
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:8112/home/users/pengzhi/.jumbo/srv/http/ask18001/index.php 注意这里fcgi后面一定要加上 Directory路径哈
#ProxyPassMatch ^/(.*)$ fcgi://127.0.0.1:8112/home/users/pengzhi/.jumbo/srv/http/zxq/wwwroot/index.php/?_url=/$1 注意这里面的 ? 前面一定得有个/ 否则会找不到文件的