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

来源:互联网 发布:android apk源码 编辑:程序博客网 时间:2024/05/07 02:00

今天配置好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 UNINSTALLPHPIniDir "E:/php/soft/PHP"LoadModule php5_module "modules/php5apache2_2.dll"AddType application/x-httpd-php .phpAddType application/x-httpd-source .phpsphp_flag display_errors onphp_value error_reporting 2039#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL



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