apache+php+mysql配置问题总结

一、关于基本配置的问题:

 一、首先打开php.ini,找到:

; On windows:
; extension_dir = "ext"

修改为:

; On windows:
extension_dir = "E:/PHP/ext"

即去掉extension_dir前面的分号(注意斜杠方向),表示指定PHP扩展包的具体目录,以便调用相应的DLL文件。

二、由于默认PHP并不支持自动连接Mysql,需开启相应的扩展库功能,比如php_mysql.dll等,即将:

extension=php_curl.dll          //CURL,客户端 URL 库函数库

extension=php_gd2.dll           //GD绘图函数模块
extension=php_mbstring.dll       //多字节函数模块
extension=php_mysql.dll         //MySql函数模块

extension=php_mysqli.dll         //MySqli函数模块

extension=php_pdo_mysql.dll     //PDO MySql函数模块
extension=php_pdo_odbc.dll       //PDO ODBC函数模块
extension=php_xmlrpc.dll        //XML-RPC函数库

extension=php_xsl.dll           //XSL函数模块

这些extension之前的分号(;)去除。

三、配置PHP的Session功能

    在使用session功能时,我们必须配置session文件在服务器上的保存目录,否则无法使用session,我们需要在Windows7上新建一个可读写的目录文件夹,此目录最好独立于WEB主程序目录之外,此处我在D盘根目录上建立了phpsessiontmp目录,然后在 php.ini配置文件中找到:

;session.save_path = "/tmp"

修改为:

 

session.save_path = "D:/phpsessiontmp"

四、配置PHP的文件上传功能

    同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败,我们仍然需要在 Windows 7上建立一个可读写的目录文件夹,此处我在D盘根目录上建立了phpfileuploadtmp目录,然后在php.ini配置文件中找到:

;upload_tmp_dir =

修改为:

upload_tmp_dir = "D:/phpfileuploadtmp"

五、修改date.timezone,否则在执行phpinfo时date部分会报错:

Warning: phpinfo()[function.phpinfo]…

找到:

;date.timezone =

修改为:

date.timezone = Asia/Shanghai

至此在Windows 7上php的环境配置就算完成了,但是光完成这些配置是不够的,我们需要Apache支持PHP,所以还需要在Apache配置文件中完成相应的PHP配置。

 

“register_globals = Off”值,这个值是用来打开全局变量的,比如表单送过来的值,如果这个值设为“Off”,就只能用“$_POST['变量名']、$_GET['变量名 ']”等来取得送过来的值,如果设为“On”,就可以直接使用“$变量名”来获取送过来的值,当然,设为“Off”就比较安全,不会让人轻易将网页间传送的数据截取。这个值是否改成“On”就看自己感觉了,是安全重要还是方便重要?

 

以下是配置Apache以支持PHP:

    找到Apache安装目录下的conf文件夹下的httpd.conf,打开:

一、在#LoadModule vhost_alias_modulemodules/mod_vhost_alias.so下添加如下(路径适你自己的情况而定):

LoadModule php5_module "c:/php/php5apache2_2.dll"
PHPIniDir "c:/php"
AddType application/x-httpd-php .php .html .htm

    我们在PHP目录下可以看到多个php5apache的DLL文件,由于我们使用的是Apache2.2.17,所以我们当然需要使php5apache2_2.dll,接着指定PHP的安装目录以及执行的程序扩展名。

二、我们应该知道默认Apache服务器执行WEB主程序的目录为Apache2.2/htdocs,所以当你的WEB主程序目录变更时,我们需要修改相应的Apache配置,即将:

DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

修改为:

DocumentRoot "E:/PHPWeb"

令将:

<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs">

修改为:

<Directory"E:/PHPWeb">

三、最后修改具体的index文件先后顺序:

DirectoryIndex index. html

修改为:

DirectoryIndex index. phpindex. html

四、重启Apache服务器

    至此,在Apache服务器上PHP环境配置工作就完成了,你只需要在E:/PHPWeb目录下新建一个PHP文件,写入:

<?php

phpinfo();

?>

    然后在游览器中输入12.0.0.1,就可以看到PHP的具体配置页面了,代表在Window 7上PHP环境配置工作就算完成了。

    验证PHP是否能连接Mysql,你可以在index.php中创建如下代码:

<?php
$connect=mysql_connect("127.0.0.1","root","你的数据库密码");
if(!$connect) echo "Mysql Connect Error!";
else echo "连接成功";
mysql_close();
?>

    然后在游览器中输入127.0.0.1,看到:连接成功字样就说明PHP连接Mysql就算成功了。

二、这是常见的问题:

        新版本的后面这个一般是php5apache2_2.dll,老版本的是php5apache.dll或者php5apache2.dll在信息版本中都用不着了
 

       

三、最诡异的问题:

          插件冲突,这是我最后而且找到的唯一的解决了我的问题的答案,就是Php的插件和apache的有冲突,新版本的默认把所有Php的插件全开了,所以悲剧了,

       ;[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_EXIF]
;extension=php_exif.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_ADT]
;extension=php_adt.dll
;[PHP_AMF]
;extension=php_amf.dll
;[PHP_APC]
;extension=php_apc.dll
;[PHP_APD]
;extension=php_apd.dll
;[PHP_BCOMPILER]
;extension=php_bcompiler.dll
;[PHP_BITSET]
;extension=php_bitset.dll
;[PHP_BLENC]
;extension=php_blenc.dll
;[PHP_BZ2_FILTER]
;extension=php_bz2_filter.dll
;[PHP_CLASSKIT]
;extension=php_classkit.dll
;[PHP_CPDF]
;extension=php_cpdf.dll
;[PHP_CRACK]
;extension=php_crack.dll
;[PHP_CVSCLIENT]
;extension=php_cvsclient.dll
;[PHP_DB]
;extension=php_db.dll
;[PHP_DBX]
;extension=php_dbx.dll
;[PHP_DIO]
;extension=php_dio.dll
;[PHP_DOCBLOCK]
;extension=php_docblock.dll
;[PHP_DOMXML]
;extension=php_domxml.dll
;[PHP_DOUBLEMETAPHONE]
;extension=php_doublemetaphone.dll
;[PHP_EVENT]
;extension=php_event.dll
;[PHP_FILEINFO]
;extension=php_fileinfo.dll
;[PHP_FILEPRO]
;extension=php_filepro.dll
;[PHP_FRIBIDI]
;extension=php_fribidi.dll
;[PHP_GOPHER]
;extension=php_gopher.dll
;[PHP_HARU]
;extension=php_haru.dll
;[PHP_HTSCANNER]
;extension=php_htscanner.dll
;[PHP_HTTP]
;extension=php_http.dll
;[PHP_HYPERWAVE]
;extension=php_hyperwave.dll
;[PHP_IBM_DB2]
;extension=php_ibm_db2.dll
;[PHP_ID3]
;extension=php_id3.dll
;[PHP_IFX]
;extension=php_ifx.dll
;[PHP_IISFUNC]
;extension=php_iisfunc.dll
;[PHP_INGRES2]
;extension=php_ingres2.dll
;[PHP_JAVA]
;extension=php_java.dll
;[PHP_LZF]
;extension=php_lzf.dll
;[PHP_MAILPARSE]
;extension=php_mailparse.dll
;[PHP_MAXDB]
;extension=php_maxdb.dll
;[PHP_MCRYPT_FILTER]
;extension=php_mcrypt_filter.dll
;[PHP_MCVE]
;extension=php_mcve.dll
;[PHP_NETOOLS]
;extension=php_netools.dll
;[PHP_NTUSER]
;extension=php_ntuser.dll
;[PHP_OGGVORBIS]
;extension=php_oggvorbis.dll
;[PHP_OPERATOR]
;extension=php_operator.dll
;[PHP_ORACLE]
;extension=php_oracle.dll
;[PHP_PARSEKIT]
;extension=php_parsekit.dll
;[PHP_PDF]
;extension=php_pdf.dll
;[PHP_PDO_IBM]
;extension=php_pdo_ibm.dll
;[PHP_PDO_INFORMIX]
;extension=php_pdo_informix.dll
;[PHP_PDO_USER]
;extension=php_pdo_user.dll
;[PHP_PHAR]
;extension=php_phar.dll
;[PHP_PHPDOC]
;extension=php_phpdoc.dll
;[PHP_POP3]
;extension=php_pop3.dll
;[PHP_PRINTER]
;extension=php_printer.dll
;[PHP_RADIUS]
;extension=php_radius.dll
;[PHP_RUNKIT]
;extension=php_runkit.dll
;[PHP_SAM]
;extension=php_sam.dll
;[PHP_SDO]
;extension=php_sdo.dll
;[PHP_SMTP]
;extension=php_smtp.dll
;[PHP_SPL_TYPES]
;extension=php_spl_types.dll
;[PHP_SSH2]
;extension=php_ssh2.dll
;[PHP_STATS]
;extension=php_stats.dll
;[PHP_STEM]
;extension=php_stem.dll
;[PHP_SVN]
;extension=php_svn.dll
;[PHP_SWISH]
;extension=php_swish.dll
;[PHP_THREADS]
;extension=php_threads.dll
;[PHP_TIMEZONEDB]
;extension=php_timezonedb.dll
;[PHP_TRANSLIT]
;extension=php_translit.dll
;[PHP_UPLOADPROGRESS]
;extension=php_uploadprogress.dll
;[PHP_WIN32PS]
;extension=php_win32ps.dll
;[PHP_WIN32SCHEDULER]
;extension=php_win32scheduler.dll
;[PHP_WIN32SERVICE]
;extension=php_win32service.dll
;[PHP_WIN32STD]
;extension=php_win32std.dll
;[PHP_YAMI]
;extension=php_yami.dll
;[PHP_ZLIB_FILTER]
;extension=php_zlib_filter.dll;


这是最后的正确配置,除了第一里面说的保留着,其他的全部注释掉,apache就可以成功启动。


四、这个是网上相对全的一份:

     Apache + PHP + mysql各种问题分析以及一些解决方案


在我的前一篇日志中提到,搭建整个Apache+PHP+mysql+eclipse开发环境遇到了很多的问题,问题千奇百怪,网上的解决方案也是形形色色,在介绍了 eclipse下php调试配置后,我总结出了一个整个搭建过程中解决问题的大杀器——Apache日志文件分析。本文通过列举各种各样的问题、错误,并分析如何通过Apache日志文件来最终解决问题。总的思路还是我那篇日志中提到的回归原点,多看文档,多看错误日志,只有知其然,并且知其所以然,才能解决问题。

对于遇到的各种问题,我的感觉是如此:

  • 上次同样的版本这样配置就行,这次就不行了;
  • 网上说把xxx.dll复制到system32下,我复制了还是没解决问题;
  • 刚才重装Apache就解决了那个问题,为什么我现在重装那个问题又出来了;
  • 为什么大家都说加上环境变量问题就解决了,我加了还是没能解决;
  • ……

1.装了apache或者配置PHP后,服务启动不了: The Request opertion has failed!   于是你去Google或者百度了一下,网上的前辈们确实总结的很详细(确实许多人都被这个问题害惨了),有的甚至总结出好多种原因:80端口被占用、软件冲突、httpd.conf配置错误、甚至winsock出错。那么你该怎么办呢,一个一个去试?还是听我的,来看看Apache错误日志吧。

Apache错误日志指的是Apache安装文件夹下logs/error.log文件,里面记录了所有的错误的具体环境,时间、原因等,并且信息、格式还可以自己去配置。

在查看了error.log后,其中我们在文件末尾发现了一句:… make_sock: could not bind to address 0.0.0.0:80…. 你是不是知道了问题所在了,80端口不能绑定,那么你就可以去看一下那些程序占用了80端口(IIS,迅雷,SQL server的某个服务)或者你干脆把Apache端口改成8081,总之这个问题解决了。

2. 还是同样的错误 The Request opertion has failed! 只不过是在你加了LoadModule php5_module C:/php/php5apache2.dll
PHPIniDir “C:/php” 这两句之后,就错了,网上也有各种求助的。来看看error.log中怎么说:Syntax error on line 130 of …httpd.conf: Cannot load C:/php/php5apache2.dll into server: The specified module could not be found…. 你是不是该看看你有没有这个文件了,或者你确实有这个文件,但你是不是添了相对路径而忘了添加环境变量呢。

3.我确实有这个文件,但还是错了,那么log会是:Cannot load C:/Program Files/PHP/php5apache2.dll into server: The specified module could not be found. 那么它没说这个文件没有,而是说模块没找到,那么你是不是把模块文件填错了,本来应该填php5apache2_2.dll的,你填成了 php5apache2.dll,或者是版本错了,那么你可以去搜一下php5apache2.dll这个文件有什么问题,我想范围应该小了不少。

4. Apache启动都正常,但是我在登陆phpmyadmin的时候说没有加载所需要的mysql扩展或者mcrypt扩展,然后明明去掉了这两个扩展 dll那两行的分号,怎么会没有呢,一看error.log他就会告诉你,确实没找到,你的ext就没找到,你是不是该把extension_dir换成绝对路径试一下。

5.phpmyadmin登陆界面可以上去,但是一登陆就没反应IE说Internet Explorer cannot display the webpage, Firefox说连接被重置,看一下错误日志:[Thu Jun 28 21:36:27 2007] [notice] Child 1128: Acquired the start mutex.
[Thu Jun 28 21:36:27 2007] [notice] Child 1128: Starting 250 worker threads.
[Thu Jun 28 21:36:27 2007] [notice] Child 1128: Starting thread to listen on port 80.这怎么办,搜索一下这个总比不知道搜索什么要好吧,终于找到了一个说要把libmysql.dll拷贝到system32下面,照做后终于解决了这个问题。下面我详细说一下这个问题,我解决它的经历或者有人为什么没有遇到这个问题有人遇到了,我们需要知道为什么拷贝到system32后才能工作:相比我们肯定会产生这样的想法,肯定是环境变量错了,拷贝到system32下面他找到了,而原来没找到这个文件,但是明明我是添加了PHP环境变量的呀,为什么呢:因为mysql下面也有这个文件,Apache加载了mysql下面的这个libmysql.dll文件,它和PHP不一致,所以始终错了,拷贝到system32之后是因为system32在环境变量path里面在最前面,而mysql和php的环境变量在后面,发生错误的原因也就是 mysql的环境变量在php的前面,所以优先找到了mysql下的libmysql.dll. 有的人没错,是因为他先添加了php的环境变量,mysql的环境变量是后面加上去的或者根本就没有。于是有人有试了一下,现在我错了,我把php的环境变量放在path的最前面,怎么还是找到的是mysql下的libmysql.dll呢,稍微一想就知道你换过之后系统并没有生效,那么重启一下吧。

5. 在加载zend debugger插件时,时钟不成功。phpinfo里面一直没有,不知道问什么,那么你也可以看一下error.log文件了,它会告诉你failed loading zenddebugger.dll或者not found, 那么你就知道了你写了相对路径是不合适的,或者是你把ts或者nts搞错了(参考上一篇日志),那么写上正确的路径或者换上相对的版本就正确了。

另外提醒一下error.log,有时候你会发现error.log根本没有记录这个错误,那么怎么办,你可以先错误的配置去掉,启动起来 apache,然后加上错误的配置,然后restart服务,那么就会有错误日志了,因为从stop的启动,失败了是不会记录错误日志的。当然 apache有个工具叫test configuration你也可以使用这个工具找出很明显的错误,然后先把apache启动起来,对于不明显的错误就去分析错误日志好了。

当然这种方法并不是万能的,因为问题很多,千奇百怪,你想都想不到,我在这里说出我的解决问题的思路,希望对有问题而解决不了的人一些思路,或许你会想出更简单的解决办法,那么也可以分享出来,我们大家来交流。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值