前两天开始跟进PHP;我觉得,PHP的环境配置远比其他语言的要复杂很多。我所说的“其他语言”,包括Java,Oracle,scala,Python等。到现在PHP的环境被搭好,因为是全手动的配置,我完完整整的花了两天的时间。暂且记录一下这两天入手PHP的曲折的过程,以备不时之需。

   前天下午开始,我最先下载的是几个IDE。因为我的一贯逻辑是先下IDE,再搭语言环境。(不过现在看来似乎这种逻辑有些问题,
也有轻视了PHP的缘故,因为很多人都说PHP相当容易。。。 )。
   这几个IDE是我在网上看了很久找到的评价较高的。当然,是除了zend和PHPEclipse之外的。
   名字分别是 PHPEdit(推荐)
KomodoEdit 8 、Komodo IDE、(注意:科莫多的Edit和IDE是两码事,IDE付费且我用了一个下午完全不知道怎么用,不过个人觉得Komodo IDE的图标很好看 )、SaDE(一个普通的Edit软件,类似notepad++或VIm)、VIm、wix(我到现在也不知道这个是干嘛的,下载的原因是官方文档如下图~)
dFvAFowmAQAA&bo=pwFTAAAAAAABANI!

   首先需要注意的是,PHP下载的版本问题。我先后下过四个版本,但都不对。
挑选版本需要注意:文件夹数量(应该只有三到四个)、是否有php-cgi、php-win等三四个exe可执行文件、 是否有php5apache2_4.dll文件(此条极为重要,必须有此文件,重要性见下文)

网上摘的一段话:(By lixun huanIT
“下载时要注意non-thread-safe和thread-safe这两个版本。

non-thread-safe是非安全线程主要与IIS搭配环境。

thread-safe安全线程与Apache搭配环境。

注意thread-safe版本中会有php5apache2_4.dll的动态链接库,与apache搭配。

其次,就是把php.ini-production改成php.ini文件,并存到根目录下。”

   请注意下此问题:
   百度上很多人都说,是改什么 php.ini-dist或 php.ini.recommended。
   对此问题,后来我又看了视频以及官网,应该是老版本~
   有两个ini文件,一个是以development为扩展名,一个以production为扩展名。前者是开发者用,后者是商业用途。看了很多大神的文章,都说修改商业用途,理由我也不清楚,按此做即可~

   然后就是修改php.ini,首先按官方api去修改,如图:概不赘述。
php配置问题汇总_第1张图片

   需要注意的是:extension_dir之后指向的路径应是php根目录下的ext文件夹。如果是复制的话,需要把斜杠改成“/”,如:我的目录是
C:\php55\ext,在粘贴到ini中时,需改成 C:/php55/ext。另外,我自己的测试,C这个字母的大小写是无影响的~
   此行代码的目的是加入扩展的dll文件,比如php对mysql等等。在ini文件中若有需要可以适当的解锁。
网络上很多人都说,需要把ini文件放到C盘windows文件夹下,但根据我的经验,这个野史类似.dist之类的老版本问题。

   完成之后,可以在dos下执行下命令,观察版本等信息~
   输入: cd c:/php55/(我的目录是php55)
   然后输入php -v查询版本信息
php配置问题汇总_第2张图片

出现类似界面,则说明配置成功!


   下一步就是最难解决的,也是成功后最有成就感的一件事,配置服务器…
注:网上很多人说要先配apache,在配php,但我是正好相反,我觉得无所谓。
   此服务器为apache2.x,一开始我以为是tomcat,想了半天怎么还用2.x的呢。 后来明白了,两个不是一个东西,要不怎么说我笨呢。
   我用的是最新的2.4,官网就有下载(不是apache的download页面
http://httpd.apache.org/download.cgi <——不是这个 。请自行百度。
   正确的版本内应有包括bin和conf在内的11个左右的文件夹,并在conf文件夹中有httpd.conf文件。

   然后就是配置,野史最麻烦的一部分。
   打开httpd.conf文件(ps:我一直是用notepad++,个人觉得比vim或者什么Edit的那个好用很多)。
   释放并修改以下内容:
ServerRoot "c:/Apache24"

Listen 81
PHPIniDir "c:/php55"

LoadModule php5_module c:/php55/php5apache2_4.dll

ServerAdmin [email protected]

DocumentRoot "c:/Apache24/htdocs"


ErrorLog "logs/error.log"


(网上有很多详细介绍,请百度,重要的就以上几个。)

然后win+R,cmd,输入cd c:/Apache24/bin/,输入httpd.exe -k install,输入http.exe -k start/stop/restart,输入后无反应,则说明配置正确。

主要我想说的是异常情况:
1、最开始我一直碰到的问题,提示can't load XXX\php5apache2_4.dll into server: The specified module could not be found.
   问题原因:PHP根目录下无php5apache2_4.dll文件、此文件和你的php版本不匹配,也就是说,你这个文件是你自己单下的,(
我就在这上头 吃了大亏 )、最后的可能就是你配置没配对,见上文。
   解决办法:这个dll文件千万不要单下,若发现根目录下无此文件,只能说明一个问题——就是你的php没下对,重新去官网下载吧,记住要下载有tread safe并符合你系统的版本。

2、“
Warning: DocumentRoot [/usr/local/apache2/docs/dummy-host.example.com] does not exist
    问题原因:
conf/extra/httpd-vhosts.conf文件了多了一些没有实质的文件。
    解决办法:讲这个配置文件中的所有东西都注掉~

3、
Address already in use: make_sock: could not bind to address [:]:80
   问题原因:你设置的apache的端口已被占用,
   解决办法:似乎很简单的问题,但解决起来一点也不简单。百度谷歌了很久,网上说法各异,但都语焉不详或者风马牛不相及。比较靠谱的说法是,在include文件夹中,有一个port.conf的文件,其中也有listen 80这个语句,启动时一起启动,当然会占用。但我没找到这个文件。
我是首先在dos下查看了端口信息,果然80是被占用。

后来找到了个老外的文章:

Description:

./apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Cause:
This problem is caused by another service listening to TCP/IP port 80.

Solution:
1.  $ sudo fuser -k -n tcp 80

2.  Change the listen port in the httpd config file to 81, by doing this we want to see which service is using port 80.

   netstat -tlnp | grep 80

3.  Third solution is to change binging address in your httpd.conf  like this:
Listen 127.0.0.1:80 ( that means:  instead of  Listen 0.0.0.0:80)

问题迎刃而解!
注意:英文不好的我解释下,其实就一句话:把端口从80设置成81~

然后启动apache,出现此界面说明正确:
dDmfDo9VAAAA&bo=OwFeAAAAAAABAEM!

搞定!~