在网页当中显示PHP遇到的错误 PHP和Apache的设置方法

今天配置好PHP以后,导入以前做的工程,发现页面遇到错误,无法显示。

错误如下:


一、修改php.ini文件。
打开E:\php\soft\PHP\php.ini

display_errors   =  On
error_reporting =  E_ALL | E_STRICT

二、修改Apache的httpd.conf文件
打开E:\php\soft\Apache2.2\conf\ httpd.conf

在最下面添加如下两行:
php_flag display_errors         on
php_value error_reporting    2039


最后重启Apache即可


这样就可以看到错误了:


看这个错误,结果一查原来是PHP没装mysql的模块所致,后来进入PHP目录一看,哇,居然没有ext文件夹!
后来追根溯源才发现是安装程序搞的名堂,太大意了。
重新运行PHP的安装程序,php-5.2.17-Win32-VC6-x86.msi
进入Change,重新检验安装设置。


哈哈,搞笑吧,之前把Extensions的红叉选过成灰色的了,但是这回展开一看,居然下面全是红叉,原来是被表面现象欺骗了,大骗纸。。

注意!重新修护PHP以后,会在Apache的配置文件
E:\php\soft\Apache2.2\conf\httpd.conf中自动添加
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir ""
LoadModule php5_module "php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
将其删除之,以免和之前设置过的重复,造成apache无法启动!




重新安装插件,问题解决,再次泪流满面!


等配置好了以后一启动apache服务,本以为万事已经了结,随即再次出现错误。
httpd.exe - 应用程序错误
“0x0090424c”指令引用的"0x010c014b"内存。该内存不能为"read"。
妈呀,哥的心情顿时从珠穆朗玛峰掉到马里亚纳海沟。。。

分析了好一阵,原来是万恶的php安装程序安装了所有的模块DLL之后,原来在php.ini文件中自动加入了一大堆配置信息,而且默认已经全部设置为打开状态。
而PHP安装目录下对应的ext文件夹中却无法提供所有的模块,因此引起php.exe找不到模块的错误,并传递给Apache.exe。
因此,按照如下配置,加入适当的;来屏蔽某些不用的功能就OK。
 Local Variables:
; tab-width: 4
; End:
[PHP_BZ2]
extension=php_bz2.dll
[PHP_CURL]
extension=php_curl.dll
[PHP_DBA]
extension=php_dba.dll
[PHP_DBASE]
extension=php_dbase.dll
[PHP_FDF]
extension=php_fdf.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_GETTEXT]
extension=php_gettext.dll
[PHP_GMP]
extension=php_gmp.dll
[PHP_IMAP]
extension=php_imap.dll
[PHP_INTERBASE]
extension=php_interbase.dll
[PHP_LDAP]
extension=php_ldap.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MCRYPT]
extension=php_mcrypt.dll
[PHP_MHASH]
extension=php_mhash.dll
[PHP_MIME_MAGIC]
extension=php_mime_magic.dll
[PHP_MING]
extension=php_ming.dll
[PHP_MSQL]
extension=php_msql.dll
[PHP_MSSQL]
extension=php_mssql.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
[PHP_OCI8]
;extension=php_oci8.dll
[PHP_OPENSSL]
;extension=php_openssl.dll
[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_FIREBIRD]
extension=php_pdo_firebird.dll
[PHP_PDO_MSSQL]
extension=php_pdo_mssql.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO_OCI]
;extension=php_pdo_oci.dll
[PHP_PDO_OCI8]
;extension=php_pdo_oci8.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll
[PHP_PDO_SQLITE]
;extension=php_pdo_sqlite.dll
[PHP_PDO_SQLITE_EXTERNAL]
;extension=php_pdo_sqlite_external.dll
[PHP_PGSQL]
;extension=php_pgsql.dll
[PHP_PSPELL]
;extension=php_pspell.dll
[PHP_SHMOP]
;extension=php_shmop.dll
[PHP_SNMP]
extension=php_snmp.dll
[PHP_SOAP]
extension=php_soap.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_SQLITE]
;extension=php_sqlite.dll
[PHP_SYBASE_CT]
;extension=php_sybase_ct.dll
[PHP_TIDY]
;extension=php_tidy.dll
[PHP_XMLRPC]
;extension=php_xmlrpc.dll
[PHP_XSL]
;extension=php_xsl.dll
[PHP_ZIP]
;extension=php_zip.dll
[PHP_EXIF]
;extension=php_exif.dll

然后再次启动Apache,终于启动成功,然而...
神奇的是,当我在浏览器访问.php文件的时候,浏览器竟然提示我下载.php文件。



无奈最终解决办法是:
将PHP目录下的php5apache2_2.dll文件复制到Apache的modules内
E:\php\soft\Apache2.2\modules\php5apache2_2.dll

修改Apache的配置文件,让apache调用自己的php5apache2_2.dll
E:\php\soft\Apache2.2\conf\httpd.conf

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "E:/php/soft/PHP"
LoadModule php5_module "modules/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-source .phps
php_flag display_errors on
php_value error_reporting 2039
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

即:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "E:/php/soft/PHP"
LoadModule php5_module "modules/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-source .phps
php_flag display_errors on
php_value error_reporting 2039
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL



大功告成,走,赶快买个彩票去~
2012-1-12 15:06:37 sonikk

你可能感兴趣的:(php)