XAMPP的配置与使用

时间:2022-07-08 17:03:43

XAMPP的配置与使用

一、起因

一开始,我在本地手动DIY安装了WAMPP环境,其中经历了很长时间的折腾,原因是独立安装Apache和MySQL,以及PHP的时候,屡次遇到版本兼容问题,我主要的时间花在了版本兼容性的尝试上面了,大概有一两天时间吧。通过不断的实践和尝试,最后找到一种较为稳定的搭配方案——

Apache:httpd-2.2.22-win32-x86-no_ssl.msi

PHP:php-5.3.13-Win32-VC9-x86.zip
MySql:mysql-5.5.27-win32.msi
phpMyAdmin:phpMyAdmin_4.4.11_all_languages.1437381213.zip

源文件下载链接:WAMP独立安装文件【提取码:tfqm】, 安装教程可参考:安装参考教程

当我接触到XAMPP的时候,认识到其安装所带来的便利,但是仍然没有足够的理由说服自己非得使用XAMPP不可。后来由于使用XDEBUG进行调试的缘故,在以上的PHP版本中没有自带 php_xdebug.dll 相关插件,我在网上又是一通搜索和尝试,包括线程安全啦,还有各种版本兼容性,最终仍然没有成功,这使我认识到:如果坚持这种独立的方式去搭建环境,工作效率必然会受到影响,于是开始尝试XAMPP环境的搭建。

二、XAMPP的基本配置

我的本地环境是Windows Version: Windows 7 Ultimate SP1 64-bit,安装的XAMPP(xampp-win32-1.8.3-1-VC11-installer.exe【提取码:xsc5】)所包含的版本是XAMPP Version: 1.8.3 以及Control Panel Version: 3.2.1 [ Compiled: May 7th 2013 ]。我个人觉得这个版本的XAMPP文件配置选项比较完整,相对而言易于操作。这个集成开发环境所包含的核心的软件版本为:

Apache 2.4.4

+ MySQL 5.6.11 (Community Server) 
+ PHP 5.5.3 (VC11 X86 32bit thread safe) + PEAR  
+ phpMyAdmin 4.0.4
+ OpenSSL 1.0.1e
+ ADOdb 5.18
+ Mercury Mail Transport System v4.62 (not included in the portable version)
+ FileZilla FTP Server 0.9.41 (not included in the portable version)
+ Webalizer 2.23-04 (not included in the portable version)
+ Strawberry Perl 5.16.1.1 Portable
+ Tomcat 7.0.41
+ XAMPP Control Panel Version 3.2.1 by hackattack142 (Great Thanks!!)

安装完成之后,在浏览器中输入localhost,是Ok的。( 安装教程可参考 XAMPP简介、安装、使用 )

紧接着,我开始尝试配置虚拟主机,在httpd-vhosts.conf (文件路径:F:\xampp\apache\conf\extra\httpd-vhosts.conf) 文件中添加以下内容:

<VirtualHost *:80>
ServerAdmin heart_nature@qq.com
DocumentRoot "F:/www/MvcDemo"
ServerName mvcdemo.com
ErrorLog "logs/mvcdemo.com-error.log"
CustomLog "logs/mvcdemo.com-access.log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin heart_nature@qq.com
DocumentRoot "F:/xampp/htdocs"
ServerName xampp.net
ErrorLog "logs/xampp.net-error.log"
CustomLog "logs/xampp.net-access.log" common
</VirtualHost>

并在本地的HOSTS(文件路径:C:\Windows\System32\drivers\etc\HOSTS)文件中做相关配置(如果没有修改权限,可以拷贝到桌面进行修改,然后替换回去就可以了

127.0.0.1 mvcdemo.com
127.0.0.1 xampp.net

在浏览器中输入mvcdemo.com,结果却是403错误。出现403错误的原因基本就两种:一种是访问的路径下缺少index命名的文件,还有一种就是服务器没有开通访问权限。这里显然是后一种原因造成的。因为设置了虚拟的域名之后服务器的基本配置文件httpd.conf中并未开通外部域名的访问权限,因此拒绝被访问。

紧接着在 httpd.conf(文件路径:F:\xampp\apache\conf\httpd.conf) 文件中添加(并注释掉原来的)内容:

<Directory />
#AllowOverride none
#Require all denied
AllowOverride All
Require all granted
</Directory>

测试结果OK。

内心感到一阵欣然,但是当我转过来测试localhost的时候却又无法正常打开了,于是在httpd-vhosts.conf 文件中添加内容:

<VirtualHost *:80>
ServerAdmin heart_nature@qq.com
DocumentRoot "F:/www"
ServerName localhost
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>

测试通过,这种做法是在vhosts文件中添加localhost虚拟主机,虽然看起来有点绕弯子,anyway,问题解决了。其实这里主要是为了不想把原始的htdocs目录作为localhost根目录,但是又想保留htdocs的路径功能,因此只好新建一个域名xampp.net了。这样就可以顺利的把www目录设置为localhost的根目录。

以上配置中logs目录所对应的缺省文件路径为 F:\xampp\apache\logs 。

在修改完阿帕奇配置文件后,需要重启服务器才能让配置更改生效。

注意,虽然现在可以运行localhost了,但是为了保持一致性和稳定性,在httpd.conf文件中,最好把DocumentRoot和Directory进行同步更新为localhos域名所对应的根目录,

DocumentRoot "F:/www"
<Directory "F:/www">

此外,如果想要显示目录,则需要把Options None注释掉:

<Directory "F:/www">
AllowOverride All
#Options None
Require all granted
</Directory>

否则,在打开的目录中没有index文件时会报错:

XAMPP的配置与使用


而在注释掉 Options None 之后会列出相关文件或目录:

XAMPP的配置与使用


如果想要配置安全证书验证,如配置域名 https://mvcdemo.com,则需要在httpd-ssl.conf ( 文件路径:F:\xampp\apache\conf\extra\httpd-ssl.conf ) 文件中添加以下内容:

<VirtualHost _default_:443>
DocumentRoot "F:/www/MvcDemo"
ServerName mvcdemo.com:443
ErrorLog "logs/mvcdemo.com-error.log"
TransferLog "logs/mvcdemo.com-error.log"
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "F:/xampp/apache/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "F:/xampp/apache/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

配置好之后重启服务器,然后在浏览器中输入URL回车,便会显示:

XAMPP的配置与使用


由于我使用的是Chrome浏览器,且相关安全证书文件未提供,因此会显示红色警告,但只要能够正常发起https请求即可,这说明SSL配置是正确的。

三、配置Xdebug

上面提到Xdebug,但是究竟如何进行配置呢?这里结合自身的实践经验,总结以下XAMPP集成开发工具平台的Xdebug插件的相关配置,至于Xdebug工具的使用,则会结合相关的IDE工具进行介绍。

我们打开 php.ini(文件路径:F:\xampp\php\php.ini)文件, 搜索定位xdebug,可以看到以下内容,其中,红色部分为去掉‘;’注释之后的内容:

[XDebug]
zend_extension = "F:\xampp\php\ext\php_xdebug.dll"
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir = "F:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.trace_output_dir = "F:\xampp\tmp"

在浏览器中打开xampp.net,可以在phpinfo()中看到以下信息:

XAMPP的配置与使用


至此,Xdebug插件的基本配置已经完成。

Xdebug的详细使用步骤,可以参考:PhpStorm使用之 —— Xdebug断点调试

四、Tomcat的配置

由于本文的初衷是针对阿帕奇服务器以及PHP环境做相关的配置,tomcat的服务器环境配置,可关注 Tomcat服务器的配置

五、XAMPP的面板功能

前面已经把主要的痛点给解决了,但是还有一些和XAMPP紧密相关的地方不得不提。

XAMPP的配置与使用


单击Apache的Admin按钮可以在浏览器中打开localhost域名,而单击MySQL的Admin按钮可以打开其自带的phpMyAdmin,此外,通过访问xampp.net也可以进入phpMyAdmin,

XAMPP的配置与使用


由于MySQL默认密码是空的,考虑到安全性,可以使用《打通MySQL的操作权限》中相关方法重设MySQL数据库的访问连接密码。完成密码修改之后,要想正常访问phpMyAdmin,需要对config.inc.php(文件路径:F:\xampp\phpMyAdmin\config.inc.php)文件进行配置修改,主要修改的地方见下图:

XAMPP的配置与使用


主要是三处地方,分别在图中进行了标识。点击MySQL的Admin按钮,

XAMPP的配置与使用


输入用户名root,密码123456,点击执行,

XAMPP的配置与使用


可以看到正常进入了phpMyAdmin,在config.inc.php里所设置的password即便不与MySQL的登录密码一致也无大碍,关键是在登陆界面的表单所输入的密码要与MySQL的密码保持一致。由于继承开发包所自带的phpMyAdmin存在一定的bug,在执行部分操作时容易挂掉,因此,建议自己独立安装一个phpMyAdmin版本。关于该软件的使用,详见《phpMyAdmin的使用》

六、结束语

之所以会写这么多内容,而不是直接贴出配置文件的内容,是因为在配置的过程中自己踩了很多坑,虽然最终把这些坑给填了,但是最重要的是通过这些实践过程去学习和理解服务器的配置背后的原理和考虑的因素。因此,我所写的内容都是从0到1按照常规的思路去进行的。既然已经把那些坑都填了,现在可以把这些相关的配置文件加以备份,以备后用(配置文件打包下载)。写到这里,我突然想起了《金刚经》上的四句偈——

一切有为法,如梦幻泡影,如露亦如电,应作如是观。

以上所写的配置,仅仅只是针对当前版本的XAMPP而言的,如果有人所使用的环境与此不同,则他不可原封不动的参考我上面的内容,因为我自己的经验是:高版本的XAMPP(比如3.2版本)与我当前使用的版本(1.8版本)的配置差别很大,而非XAMPP环境下的配置文件则毫无疑问又是有很大差别的,比如我开篇所提到的DIY的开发环境。无论是佛法还是技术,都蕴含着同样的道理。虽然具体的细节可能有所不同,但最终都是殊途同归。