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);