很土鳖的问题,浪费我几个小时,终于搞定!
在 CentOS 下使用 xampp 的集成套件搭建 LAMP 环境,启动 Apache 后,用浏览器访问 web 程序,居然提示下载源文件!!
也就是 Apache 没有解析 PHP 代码!
搞了几年 PHP 还是第一次遇到这么初级的问题,折腾配置文件,花了 2 个小时,还是搞不定,真崩溃了!
逐行检查 httpd-xampp.conf,注意到 <IfDefine PHP5> 这个标签,把这些条件判断都注释掉,强行加载:
LoadModule php5_module modules/libphp5.so
这回用 bin/httpd -t 检查配置文件,得到错误提示:
httpd: Syntax error on line 509 of /opt/lampp/etc/httpd.conf: Syntax error on line 1 of /opt/lampp/etc/extra/httpd-xampp.conf: Cannot load /opt/lampp/modules/libphp5.so into server: /opt/lampp/lib/libsybdb.so.5: cannot restore segment prot after reloc: Permission denied
又是 “cannot restore segment prot after reloc” 这个错误!
还好前一阵找到了解决该问题的方法,请见 CentOS: cannot restore segment prot after reloc。
把这些 so 都修正后,加载 libphp5.so,重启 Apache ,这回 OK 啦!
问题搞定了,分析下原因,找到了 lampp 那个可执行文件,里面有这么一行:
5*) xampp_apachedefine=”$xampp_apachedefine -DPHP5″
原来是用套件提供的启动脚本,他会附加一个参数,定义了 PHP5 这个变量,而我是用 bin/apachectl start 命令行启动的,读到前面说的那个 conf 时,跳过了 <IfDefine PHP5> 这个标签,libphp5.so 没有加载,因此 PHP 没能解析。
哎,我的时间,都浪费了~~
留下记录,让后面的兄弟省下这些时间吧~~
所以说还是尽量不要用 xampp 之类的快捷安装,
不方便控制与增强理解,
手工安装,lamp 那几样东西,
配置文件一拷贝就 ok 了。
手动安装挺麻烦。主要是英语不行。还得好好学英语啊