曾经的经典架构。
httpd
cd /home/yuzx/data/download
tar -xf httpd-2.4.10.tar.gz
cd httpd-2.4.10
./configure --prefix=/home/yuzx/server --with-apr=/home/yuzx/server --with-apr-util=/home/yuzx/server --enable-so
make && make install
# svn 编译选项
--enable-mod-activation --with-apxs=/home/yuzx/server/bin/apxs --with-apache-libexecdir=/home/yuzx/server/modules
php
#### fedora ####
yum -y install re2c libmcrypt
#### ubuntu/debian ####
apt-get -y install re2c libmcrypt4 libmcrypt-dev
cd /home/yuzx/data/download
tar -xf php-5.6.4.tar.gz
cd /home/yuzx/data/download/php-5.6.4
./configure --prefix=/home/yuzx/server/php-5.6.4 --with-apxs2=/home/yuzx/server/httpd/bin/apxs --with-mysql
make && make test
make install
ln -s /home/yuzx/server/php-5.6.4 /home/yuzx/server/php
# php.ini ?
cat >> /home/yuzx/server/httpd/htdocs/a.php << EOF
<?php
echo "Hello World";
echo phpinfo();
?>
EOF
# 访问:
http://localhost/a.php
# 或者:
/home/yuzx/server/php/bin/php /home/yuzx/server/httpd/htdocs/a.php | grep php.ini
# 输出 Configuration File (php.ini) Path => /home/yuzx/server/php/lib
# 配置 php - 开发
cp php.ini-development /home/yuzx/server/php/lib/php.ini
# 配置 php - 产品
cp php.ini-production /home/yuzx/server/php/lib/php.ini
# 编辑 httpd.conf 加载 php,要确保 libphp5.so 存在
vi /home/yuzx/server/httpd/conf/httpd.conf
LoadModule php5_module modules/libphp5.so
# 告诉 apache 将特定的扩展名作为 PHP,为避免上传或创建类似 exploit.php.jpg 的文件并被当做 PHP 执行,不再用 Apache 的 AddType 指令来设置,参考下面例子
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# 如果允许 .php, .php2, .php3, .php4, .php5, .php6, .phtml 文件,则:
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
# php 源码配置,产品环境不需要
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# 有风险的 AddType 方式
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# 重启 apache
/home/yuzx/server/httpd/bin/apachectl -k stop
/home/yuzx/server/httpd/bin/apachectl -k start
# 共享扩展库,必须经过编译,安装,然后加载。在 php.ini 中用 extension PHP 指令加载共享扩展库,或用 dl() 函数加载
# 扩展模块根目录
cd /home/yuzx/data/download/php-5.6.4/ext/mysqli
# 用 phpize 生成 configure
/home/yuzx/server/php/bin/phpize
./configure --with-php-config=/home/yuzx/server/php/bin/php-config
make clean && make && make install
cd /home/yuzx/data/download/php-5.6.4/ext/mbstring
/home/yuzx/server/php/bin/phpize
./configure --with-php-config=/home/yuzx/server/php/bin/php-config
make clean && make && make install
cd /home/yuzx/data/download/php-5.6.4/ext/zip
/home/yuzx/server/php/bin/phpize
./configure --with-php-config=/home/yuzx/server/php/bin/php-config
make clean && make && make install
cd /home/yuzx/data/download/php-5.6.4/ext/gettext
/home/yuzx/server/php/bin/phpize
./configure --with-php-config=/home/yuzx/server/php/bin/php-config
make clean && make && make install
yum -y install libmcrypt libmcrypt-devel
cd /home/yuzx/data/download/php-5.6.4/ext/mcrypt
/home/yuzx/server/php/bin/phpize
./configure --with-php-config=/home/yuzx/server/php/bin/php-config
make clean && make && make install
vi /home/yuzx/server/php/lib/php.ini
# 查找 Dynamic Extensions 块
:/Dynam*
# 添加,mysql.so 和 mysqlnd.so 不需要添加
extension=mysqli.so
extension=mbstring.so
extension=zip.so
extension=gettext.so
# 执行下 php,看看是否报错,例如:*.sq 找不到之类
/home/yuzx/server/php/bin/php
# 查看 php 加载的 module
/home/yuzx/server/php/bin/php -m
# 添加扩展需要重启 apache
/home/yuzx/server/httpd/bin/apachectl -k stop
/home/yuzx/server/httpd/bin/apachectl -k start
phpMyAdmin
# 中文帮助
http://www.phpmyadmin.net/localized_docs/zh_CN/Documentation.html
cd /home/yuzx/server/httpd/htdocs
unzip /home/yuzx/data/download/phpMyAdmin-4.3.4-all-languages.zip
ln -s phpMyAdmin-4.3.4-all-languages phpmyadmin
# 访问:
http://127.0.0.1/phpmyadmin/index.php
http://10.0.0.9:8888/phpmyadmin/index.php
# 有时,会提示无法登陆 mysql 服务器,因为没有解析 localhost 域名导致:
$cfg['Servers'][$i]['host'] = 'localhost';
改为:
$cfg['Servers'][$i]['host'] = '127.0.0.1';
禁止Apache显示目录结构
===================
<Directory "d:\dx">
Options Indexes FollowSymLinks
Allow....
</Directory>
将 Indexes 选项去掉即可
Indexes 的作用:当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
增加 index.php
如果 url 访问为 http://10.0.0.9:8888/phpmyadmin/,即:一个目录,会定向到 index.html 或 index.php
xdebug
cd /home/data/download/
tar -xf xdebug-2.2.5.tgz
cd xdebug-2.2.5
# 注意 php 版本
/home/server/php/bin/phpize
./configure --with-php-config=/home/server/php/bin/php-config --enable-xdebug
make && make install
vim /home/server/php/lib/php.ini
[xdebug]
zend_extension="/home/server/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
# port 9000 is occupied by FPM, but you can set another
xdebug.remote_port=9000
xdebug.remote_autostart=1
# you can just leave it empty
xdebug.idekey=
/home/server/php/bin/php -m
Linux 下调试很好用