windows安装php,apache,mysql及其配置

PHP

下载

下载解压包

选择适合你的版本下载,我的是64位线程安全的。
解压。

修改配置

接下来将php.ini-production文件重命名为php.ini,修改设置。

; On windows:
extension_dir = "ext"

;apache不识别php-ini中的相对路径,最好写上绝对路径
extension_dir = "E:\study-environment\php\ext"



;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_fileinfo.dll
extension=php_ftp.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=php_snmp.dll

extension=php_soap.dll
extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll


#指定站点路径
查找”doc_root”,修改为doc_root = "E:\study-environment\www"

加入环境变量

把php加入环境变量:
Control Panel\All Control Panel Items\System----->Advanced system settings----->Environment Variables----->System variables----->Path
添加php的安装路径,如:
E:\study-environment\php

Apache

下载

下载解压包

注意:在Windows上,确保PHP(5.5以上)与Apache(2.4)可以协同运作的唯一方法是Apache和PHP都是32位(x86)或64位(x64) )和Apache和PHP都是线程安全(TS)。 使用非线程安全(NTS)不适用,并且线程安全版本捆绑了所需的Apache模块PHP“php7apache2_4.dll”。 NTS版本没有这个模块。
还要注意检查它们是否都使用相同版本的Visual Studio(例如VC14)进行编译。

修改配置

下载完后,解压,找到conf/httpd.conf,进行配置。

Define SRVROOT "/Apache24"
ServerRoot "${SRVROOT}"
改为
Define SRVROOT "E:\study-environment\Apache"  ##你的安装目录
ServerRoot "${SRVROOT}"


#修改端口的配置
#Listen 12.34.56.78:80
Listen 80

ServerName localhost:80


#设置php7module
#查找”LoadModule”,新增行,输入加载的php模块信息
LoadModule php7_module "E:\study-environment\php\php7apache2_4.dll"

#修改默认站点
#DocumentRoot "${SRVROOT}/htdocs"
#<Directory "${SRVROOT}/htdocs">
DocumentRoot "E:\study-environment\www"
<Directory "E:\study-environment\www">

#查找”AddType”,新增行,输入允许执行php的文件类型
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html

#查找”DirectoryIndex”,更改默认首页为
DirectoryIndex index.php index.html

#注意使用英文字符,使用中文字符会解析出错


保存,win+x打开命令提示符(管理员)(以管理员方式运行),定位到bin目录,安装Apache:httpd -k install

启动

Apache常见命令操作

#Start Apache 
httpd -k start 

#Stop Apache
httpd -k stop

#Restart Apache  
httpd -k restart

#Uninstall Apache Service  
httpd -k uninstall

#Test Config Syntax  
httpd -t

#Version Details 
httpd -V

#Command Line Options List  
httpd -h

启动时可能会发生错误。

(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted.  : AH00072: make_sock: could not bind to address [::]:443

(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted.  : AH00072: make_sock: could not bind to address 0.0.0.0:
443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

这是因为443端口被占用了,服务启动不了,有两个解决方法

方法一
可以在conf/extra/httpd.conf查找 Include 
如果找到

#Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-ahssl.conf

说明 https 应用的配置文件是conf/extra/httpd-ahssl.conf 
打开该文件,修改https端口

Listen 443 https



方法二
1.查看所有的端口占用情况
C:\>netstat -ano
2.查看指定端口的占用情况
C:\>netstat -aon|findstr "443"
协议    本地地址                     外部地址               状态                   PID
  TCP    127.0.0.1:443         0.0.0.0:0              LISTENING       2016

端口被进程号为2016的进程占用,继续执行下面命令: (也可以去任务管理器中查看pid对应的进程)
3.查看PID对应的进程
C:\>tasklist|findstr "2016"
 映像名称                       PID 会话名              会话#       内存使用
 ========================= ======== ================
  tor.exe                     2016 Console                 0     16,064 K


tor进程占用了443端口。

4.结束该进程
C:\>taskkill /f /t /im tor.exe

测试

启动了Apache后,在站点文件”E:\study-environment\www”内新建文件”index.php”,添加:

<?php
 phpinfo();
?>

重启Apache,在浏览器访问apache配置的端口。

后续配置

apach配置多个端口。
在httpd.conf中设置监听多个端口。

Listen 8000
Listen 8099
Listen 8077

启用httpd-vhosts.conf设置。

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

注意,在http.conf中设置的DocumentRoot,在httpd-vhosts.conf配置的所有的虚拟目录都应该在这个目录之下设置。
比如我的DocumentRoot

DocumentRoot "E:\study-environment\www"

然后在httpd-vhosts.conf中配置目录和地址:

#NameVirtualHost *:8099  //2.4已弃用
<VirtualHost *:8099 >
ServerName 0.0.0.0:8099
DocumentRoot "E:\study-environment\www\8099"
</VirtualHost>
#NameVirtualHost *:8077 //2.4已弃用
<VirtualHost *:8077>
ServerName localhost:8077
DocumentRoot "E:\study-environment\www\8077"
</VirtualHost>

新建index.php访问测试

Mysql

下载

下载安装包

直接安装,设置root密码。

配置php数据库模块

php_mysql由于安全问题被弃用了,可以用php_mysqli和php_pdo_mysql代替
详见这里

5.x开始,PHP连接MYSQL无论使用哪种方式都是使用的mysqlnd驱动。包括mysql_*、pdo_mysql、mysqli。

mysqlnd和mysql/mysqli/pdo_mysql关系打比方说 mysqlnd是金属,而mysql mysqli pdo_mysql只是金属制品。

例:使用PDO连接mysql

$pdo = new PDO('mysql:host=localhost;dbname=database_name;port=3306','用户名','密码');
$pdo->exec('set names utf8');

$stmt = $pdo->prepare("select * from table where id =:id");
$stmt->bindValue(':id',1,PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

$rows = $pdo->query("select * from table where id = 1")->fetchAll(PDO::FETCH_ASSOC);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • php+mysql+apache+centos 编译安装 领导要求先保证php环境稳定,然后再去考虑其他,例如性能...
    dnaEMx阅读 2,166评论 1 16
  • LAMP简介 LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架...
    mx3阅读 1,060评论 1 9
  • 一、需求来源 最近在做一个就业信息发布网站,发布每天的南北校宣讲会信息。此时前端模型已经搭建好,用的是HTML+C...
    treker阅读 6,496评论 4 30
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,563评论 18 139
  • 肚子着凉了。 在值班室忙活了半天,不知不觉就睡着了,因为没盖被子,也没有用衣服掩一下肚子,硬生生的...
    埂中鸣阅读 359评论 2 6