搭建PHP本地开发环境
写在前面的话
PHP是服务器脚本语言,所以需要在服务器上才能运行。作为新手,搭建服务器可能需要捣腾很久,有可能还搞不定。所以在入门阶段,为了把更多时间用在熟悉编程语言上,使用集成环境是最好也是最方便的选择。而本文就来介绍如何在windows平台搭建PHP开发环境。
安装集成环境
1、下载集成环境包WampServer官网
本人下载的是Wampserver 3.0.6 64 bit ,下载完成之后双击安装即可。
wamp 3.0.6 安装的软件分别为:
Apache 2.4.23
PHP 5.6.25/7.0.10
MySQL 5.7.14
PhpMyAdmin 4.6.4
Adminer 4.2.5
PhpSysInfo 3.2.5
* apache 2.4及以上版本与2.4以下版本的配置会有些不同
* wamp会同时安装PHP5和PHP7,安装完成之后可以进行切换使用
2、安装过程出现错误
若安装过程中出现提示缺少 msvcr110.dll 等文件,请先下载vcredist_x64.exe安装wamp所需环境。
服务器配置
1、项目路径
安装好wamp后,在安装路径下有个www文件夹,该文件夹用于存放你的项目文件,在这个目录下的文件才会被服务器识别和执行。
例如:我安装wamp时选中的目录为
D:\wamp64
则安装后的存放项目文件目录为
D:\wamp64\www
当然,如果不想使用默认的www文件夹,也可以修改apache配置,指定目录让服务器解析。
在安装目录下找到apache的配置文件httpd.conf
安装目录\bin\apache\apache2.4.23\conf\httpd.conf
使用记事本或者其他编辑器打开文件,找到
代码如下 | 复制代码 |
DocumentRoot "${INSTALL_DIR}/www" ... |
把${INSTALL_DIR}/www修改为需要指定的目录
然后,同样在该目录中找到httpd-vhosts.conf文件
代码如下 | 复制代码 |
extra\httpd-vhosts.conf
#打开文件↓
ServerName localhost DocumentRoot D:/wamp64/www ...
|
修改D:/wamp64/www为需要指定的目录即可。这样以后服务器就会解析这个目录下的文件了。
*修改配置之后要记得重启服务器
2、测试
新建一个项目测试服务器是否可用。
在www文件夹下新建一个test文件夹,文件夹中新建一个test.php,php文件中写上一些输出语句。例如程序员入门必写的一句话:
echo 'Hello World!'
之后打开浏览器,在地址栏输入
localhost/test/test.php
如果你的浏览器有显示Hello World!字样,就说明你的服务器可以使用了。
3、配置虚拟主机
不喜欢以localhost/项目文件名/xxx.php/…这种方式进行访问?那可以配置虚拟主机,配置后可以通过类似www.test.com(可自定义)这种形式访问。
首先找到httpd-vhosts.conf文件并打开
安装目录\bin\apache\apache2.4.23\conf\extra\httpd-vhosts.conf
在文件末尾添加
代码如下 | 复制代码 |
#设置主机名(可自己设置) ServerName www.test.com #设置主机别名,即用该别名也可以访问(前提是域名解析正确) ServerAlias test.com #设置该站点根目录 DocumentRoot "D:\wamp64\www\test" #设置文件夹访问控制,其路径要和上一行的DocumentRoot一样, #用于显示设定“可显示文件列表”(当无可显示网页的时候) Options Indexes #启用文件夹访问控制的文件.htaccess设置 AllowOverride All #请求控制 Require all granted #默认打开的页面设置 DirectoryIndex index.php index.html
|
然后,找到hosts文件,win10的hosts文件路径为:
代码如下 | 复制代码 |
C:\Windows\System32\drivers\etc #每个系统都不一样,可以去问问百度 |
在文件末尾处添加127.0.0.1www.test.com(注意中间的空格不要丢),保存。
*如果保存提示另存为的话,可以先另存为,然后修改另存为的文件名为hosts,覆盖掉原来的hosts文件
代码如下 | 复制代码 |
... # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a'#'symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost
127.0.0.1www.test.com |
修改hosts的目的是为了在浏览器访问时,系统不会把域名(www.test.com)提交到DNS服务器,而是直接根据hosts文件找到IP地址(此时是本地),提交解析。这样我们本地的服务器就可以解析这个域名了。
4、局域网远程访问
如果需要在局域网中能通过链接访问站点(例如开发web app时使用手机测试),那么就需要开启服务器远程访问权限了。
打开apache配置文件httpd.conf
安装目录\bin\apache\apache2.4.23\conf\httpd.conf
修改AllowOverride和Require配置为如下
代码如下 | 复制代码 |
DocumentRoot "${INSTALL_DIR}/www" ... AllowOverride all Require all granted ... |
同时需要修改httpd-vhosts.conf文件,修改相同的配置
代码如下 | 复制代码 |
ServerName localhost DocumentRoot D:/wamp64/www ... AllowOverride All Require all granted
|
若只需要访问其中某一个站点,则首先需要给这个站点配置虚拟主机,然后在该虚拟主机的配置中修改AllowOverride和Require
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。
这篇文章主要介绍了PHP 实现浏览记录并按日期分组的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下现有测试数据如下,要求实现如下图中的效果:
代码如下 | 复制代码 |
array(4) { [0] =>array(6) { ["visit_id"] => int(127) ["goods_id"] => int(16) ["visittime"] => int(1494399935) ["goods_name"] => string(53)"OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金" ["shop_price"] => string(6)"500.00" } [1] =>array(6) { ["visit_id"] => int(124) ["goods_id"] => int(13) ["visittime"] => int(1494399921) ["goods_name"] => string(76)"SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款" ["shop_price"] => string(7)"4000.00" } [2] =>array(6) { ["visit_id"] => int(123) ["goods_id"] => int(27) ["visittime"] => int(1494399903) ["goods_name"] => string(85)"爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)" ["shop_price"] => string(6)"329.00" } [3] =>array(6) { ["visit_id"] => int(120) ["goods_id"] => int(26) ["visittime"] => int(1494224263) ["goods_name"] => string(21)"欢乐谷免票一张" ["shop_price"] => string(5)"50.00" } } |
还没实现之前我想这个代码不知道要O(n)呢还是更高的复杂度才能实现,细想一下,其实php的数组底层就是哈希实现的,如何简单利用这个特性使复杂度降到O(1)呢?
代码如下 | 复制代码 |
show me the code: /* 浏览记录按日期分组 */ functiongroupVisit($visit) { $curyear=date('Y'); $visit_list= []; foreach($visitas$v) { if($curyear==date('Y',$v['visittime'])) { $date=date('m月d日',$v['visittime']); }else{ $date=date('Y年m月d日',$v['visittime']); } $visit_list[$date][] =$v; } return$visit_list; } |
说明:入参 $visit 就是上面一开始的测试数据,函数中还对用户体验做了一些优化,比如,你的浏览记录中总是显示出今年的年份,是不是感觉有点冗余,所以如果是本年份的话,年份就要隐藏起来,其他年份还是照样显示出来。不然代码会更加简洁。
好了上面的测试数据经过该函数之后,再把返回值打印出来,有:
代码如下 | 复制代码 |
array(2) { ["05月10日"] =>array(3) { [0] =>array(6) { ["visit_id"] => int(127) ["goods_id"] => int(16) ["visittime"] => int(1494399935) ["goods_name"] => string(53)"OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金" ["shop_price"] => string(6)"500.00" } [1] =>array(6) { ["visit_id"] => int(124) ["goods_id"] => int(13) ["visittime"] => int(1494399921) ["goods_name"] => string(76)"SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款" ["shop_price"] => string(7)"4000.00" } [2] =>array(6) { ["visit_id"] => int(123) ["goods_id"] => int(27) ["visittime"] => int(1494399903) ["goods_name"] => string(85)"爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)" ["shop_price"] => string(6)"329.00" } } ["05月08日"] =>array(1) { [0] =>array(6) { ["visit_id"] => int(120) ["goods_id"] => int(26) ["visittime"] => int(1494224263) ["goods_name"] => string(21)"欢乐谷免票一张" ["shop_price"] => string(5)"50.00" } } } |
对的,这正是我想要的效果。
以上所述是小编给大家介绍的PHP 实现浏览记录并按日期分组,希望对大家有所帮助。在此也非常感谢大家对本网站的支持!
本文介绍了PHP两种实现无级递归分类的方法,非常实用,有兴趣的同学快来看看吧
代码如下 | 复制代码 |
/** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return string $tree 返回的分类树型结构结果 * */ functionrecursiveAssort($assortPid,$tag='') { $assort= M('goods_class')->where("class_pid = $assortPid")->field('class_id, class_name')->select(); foreach($assortas$value) { $tree.=' $tree.= recursiveAssort($value['class_id'],$tag.' '); } return$tree; } |
代码如下 | 复制代码 |
/** * 利用php的引用传递 CI框架 * */ publicfunctionget_access() { $access=array(); $field='id, pid, method, name, description' $q_access=$this->db->select($field)->get('access'); $q_result=$q_access->result_array(); if(!empty($q_result)) { $items=array(); foreach($q_resultas$value) { $items[$value['id']] =$value; } foreach($itemsas$key=>$item) { if($item['pid'] == 0) { $access[] = &$items[$key]; }else{ $items[$item['pid']]['sub_access'][] = &$items[$key]; } } } return$access; } |
本文介绍了PHP 二级子目录(后台目录)设置二级域名的教程,不会的同学可以看看
我们可以利用Apache的.htaccess重写来实现301跳转,具体操作方法是--将后台的根目录文件夹中的.htaccess文件添加内容为:
代码如下 | 复制代码 |
<IfModulemod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.test\.com$ [NC] RewriteRule ^(.*)$ http://xxx.test.com [R=301,L] </IfModule> |
相关文章
- 最常见的多环境配置,就是开发环境配置,和生产环境配置,本文主要介绍了vue项目多环境配置的实现,感兴趣的可以了解一下...2021-07-20
- 一、下载Eclipse的PHP插件 百度搜索phpeclipse,看到某条结果是带有SourceForge.net字样的,点进去,找到Download按钮,点击之后,等待5秒就会开始下载了。二、安装Eclipse的PHP插件 插件下载完成之后,解压,然后把site.xml...2015-11-24
- 用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高...2013-09-27
mac下Apache + MySql + PHP搭建网站开发环境
首先为什不自己分别搭建Apache,PHP和MySql的环境呢?这样自己可以了解更多知识,说起来也更酷。可也许因为我懒吧,我是那种“既然有现成的,用就是了”的人。君子生非异也,善假于物也。两千年前的荀子就教导我们,要善于利用工具...2014-06-07- 这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
- 这篇文章主要给大家介绍了关于VSCode配置C#运行环境的完整步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
- 下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20
- 这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
- 在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
Ubuntu 系统下安装Android开发环境 Android Studio 1.0 步骤
Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,可以在Linux,Mac OS X,Window...2016-09-20Windows配置VSCode+CMake+Ninja+Boost.Test的C++开发环境(教程详解)
这篇文章主要介绍了Windows配置VSCode+CMake+Ninja+Boost.Test的C++开发环境,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-12- 这篇文章主要给大家介绍了关于Nest.js环境变量配置与序列化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-21
如何使用VSCode配置Rust开发环境(Rust新手教程)
这篇文章主要介绍了如何使用VSCode配置Rust开发环境(Rust新手教程),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-27VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h”或者检测到 #include 错误,请更新includePath)(POSIX API)
这篇文章主要介绍了VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h” 或者 检测到 #include 错误。请更新includePath) (POSIX API),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-13- 在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
如何设置process.env.NODE_ENV生产环境模式
process.env.NODE_ENV默认只有两种状态即development和production,本文主要介绍了process.env.NODE_ENV设置生产环境模式,感兴趣的可以了解一下...2021-09-14- 从这一节开始,我们将从零开始打造我们的chrome插件工具库,第一节我们将讲一下插件开发的基础知识并构建一个简单但却很实用的插件,在构建之前,我们先简单的了解一下插件以及插件开发的基础知识...2020-10-03
- Visual Studio Code是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,这篇文章主要介绍了VSCode搭建C/C++编译环境,需要的朋友可以参考下...2020-05-15
- 这篇文章主要介绍了vue cli3 实现分环境打包的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-12
Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
这篇文章主要介绍了Cocos2d-x UI开发之CCControlColourPicker控件类使用实例,本文代码中包含大量注释来讲解CCControlColourPicker控件类的使用,需要的朋友可以参考下...2020-04-25