前两天开始跟进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(我到现在也不知道这个是干嘛的,下载的原因是官方文档如下图~)
首先需要注意的是,PHP下载的版本问题。我先后下过四个版本,但都不对。
挑选版本需要注意:文件夹数量(应该只有三到四个)、是否有php-cgi、php-win等三四个exe可执行文件、是否有php5apache2_4.dll文件(此条极为重要,必须有此文件,重要性见下文)
网上摘的一段话:(BylixunhuanIT)
“下载时要注意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去修改,如图:概不赘述。
需要注意的是: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查询版本信息
出现类似界面,则说明配置成功!
下一步就是最难解决的,也是成功后最有成就感的一件事,配置
服务器…
注:网上很多人说要先配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 chinacyzmail@163.com
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,出现此界面说明正确:
搞定!~
网页标题:php配置问题汇总
URL网址:
http://cdweb.net/article/gepehi.html