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文件时会报错:


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


如果想要配置安全证书验证,如配置域名 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回车,便会显示:


由于我使用的是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()中看到以下信息:


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

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

四、Tomcat的配置

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

五、XAMPP的面板功能

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


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


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


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


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


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

六、结束语

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

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

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

XAMPP的配置与使用的更多相关文章

  1. 【图文教程】Eclipse for PHP+XAMPP调试配置

    一.下载安装XAMPP 下载地址:https://www.apachefriends.org/download.html, 一路“Next”,安装完毕. 二.下载Eclipse for PHP 下载地 ...

  2. XAMPP Apache 配置多端口和多域名方法

    我们在工作中经常遇到同时调试多个网站的情况,那么如何配置呢?就像平时访问网站一样,网站 a.com 与网站 b.com 截然不同.这都是常见现象,如果在局域网中要访问另外一台电脑上的多个网站,就需要使 ...

  3. windows系统dokuwiki安装部署设置 xampp环境配置

    简单记录一次安装dokuwiki的过程 dokuwiki下载 dokuwiki下载地址 https://download.dokuwiki.org/ 下载前有一些可选项目,版本.语言.插件,可以按照需 ...

  4. xampp默认配置拿shell

    xampp默认配置拿shell 首先我们先来科普一下xampp(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包 是一个易于安装且包含 MySQL.PHP ...

  5. 在xampp中配置dvwa

    DVWA主要是用于学习Web的常见攻击,比如SQL注入.XSS等的一个渗透测试系统,下面我将结合XAMPP来说明它的安装过程. 一.环境 OS:Windows 10 XAMPP:5.6.24 DVWA ...

  6. xampp本地配置多域名

    xampp内建apache服务器,也是可以配置vhosts的 1. 打开httpd.conf文件,搜索vhosts 发现这句话: # Virtual hosts Include conf/extra/ ...

  7. 【转】XAMPP中配置多个网站

    XAMPP虚拟主机配置,多域名绑定访问本地站点 XAMPP有时候你需要一些顶级域名访问方式来访问你本地的项目也就是虚拟主机配置,这时候就需要配置虚拟主机,给你的目录绑定一个域名,实现多域名绑定访问. ...

  8. ubuntu14.10服务器版安装xampp,配置域名端口访问

    1.从xampp下载下了xampp-linux-1.7.3a.tar这个包,然后ftp到我的linux虚拟机中, 2.复制到opt下,(可以直接解压的)到opt下面,tar xvfz xampp-li ...

  9. Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)

    xampp安装好之后就只有一个默认站点及一个默认nobody的ftp账户,这显然不符合我们平时的需求了,那么下面就来讲一下如何设置并管理多个虚拟主机及ftp账户了,至于xampp的安装不在此讨论范围, ...

随机推荐

  1. PHPMailer发送邮件失败:SMTP connect failed

    标签: PHPMailersmtp邮件服务器邮件发送失败 2015-05-22 19:29 1755人阅读 评论(0) 收藏 举报 分类: Apache php+mysql(2) 版权声明:本文为博主 ...

  2. Aliase_小白学Python_Day0_前言

    听到有老师介绍,说你为什么不把你的学习过程保存下来,一是当做总结,二是作为分享.我想,也对.这算是我的第一个博客,本次想写写我为什么选择学习Python. 很多人都问过我一个问题,行业那么多,你为什么 ...

  3. ProtoBuf 与 gRPC

    用 Protobuf 很久了,但是一直觉得很简单,所以就没有做一个总结,今天想尝试一下 gRPC,顺带就一起总结一下.ProtoBuf 是个老同志了,应该是 2010 的时候发布的,然后被广泛使用,目 ...

  4. 人人都是CEO

    在这个互联网崛起的时代有些流行说法,比如:人人都是产品经理,人人都是程序员以突显行业繁荣的特点,但从更基本的出发点,难道人人不都是 CEO 么?个人的 CEO. 从这个名字套路出发,我沿着想了下去,作 ...

  5. Angular 2 前端 http 传输 model 对象及其外键的问题

    个人随笔,记录问题及思路草稿,非文章性质.     对于设备编辑场景,需要显示设备类型(外键),   前端有如下 TypeScript model(此 model 和后端实体 model 通常相对应) ...

  6. oracle 配置 自启动 和 关闭

    今天在看oracle自启动脚本,突然有点时间,总结一下!!! 第一次写博客,大家随便看看就好,有错误麻烦提醒下,不喜欢别喷,主要是锻炼自己,形成写博客的好习惯. 刚毕业,现在还没转正,在干运维和自学d ...

  7. maven核心概念--生命周期

    maven有一个命令,mvn package,该命令行并没有指定一个插件目标, 而是指定了一个Maven生命周期阶段.一个阶段是在被Maven称为"构建生命周期"中的一个步骤.生命 ...

  8. google的grpc在golang中的使用

    GRPC是google开源的一个高性能.跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x. 前面写过一篇golang标准库的rpc包的用法,这篇文章接着讲一 ...

  9. DELL服务器硬件信息采集SHELL脚本

    DELL服务器硬件信息采集SHELL脚本最近需要做资产列表,要采集DELL服务器的硬件信息,包括如下信息:1.操作系统信息(类型,版本,内核,平台,主机名)2.主板信息(厂商,机型,序列号)3.CPU ...

  10. C#面向对象方式设置、读取应用配置

    关注点: 1.用面向对象方式的方式(get,set)访问和设置配置项 2.“CallerMemberName”在.net 4以下的变通方式 最后一周了,大伙都进入过年模式了.身还在,心已远.最近事情不 ...