window10下搭建php的运行环境
转载: https://blog.csdn.net/YOYOYOHUI/article/details/81433894
之前开发一直都是用的php集成环境(phpstudy,xampp等),没有尝试过使用php+mysql+apache在本地独立搭建PHP运行环境,所以今天突然想试着搭建一下。首先我们需要的搭建工具有:
- windows操作系统(我的电脑是win10)
- apache
- MySQL
- php
1.Apache的安装:
apache的下载地址http://www.apachelounge.com/download/,根据你的电脑配置下载
根据你的电脑配置来下载是32位的还是64位的。这里我在D盘创建了一个wamp的文件夹,将下载好的apache解压在该目录下。接下来以管理员的身份运行cmd,然后一步步进入到d:\wamp\Apache\bin目录,在该目录下执行httpd -k install 命令,
我第一次执行httpd -k install 安装命令是遇到了上图的问题,那是应为在httpd.conf配置文件中的默认路径是错误的,你手动改写成你实际路径即可。
过程中我也遇到了apache不能安装的情况,后来查了一下是之前安装的apache已经被设置为系统服务,删除即可。
删除操作如下(注意也是以管理员身份操作):
操作:在开始启动栏输入services.msc,打开系统服务列表:如图
当然期间我也遇到其他的问题:
右键上图中的Apache2.4-》属性
发现可执行文件的路径是错误的,还是之前集成环境的路径(当然这里已经是我修改过后的)。
这里是可修改的,方式如下:
开始启动搜索栏中输入"regedit"打开注册表 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 下找到所需的服务Apache2.4,将其 "ImagePath"键值更改为实际路径即可。当然这里的介绍只是针对你的apache启动不了的情况,如果你执行了
sc delete apache2.4
这条命令,你是不用执行以上操作的。当你执行完httpd -k install,出现以下内容时,说明你本地的apache已经安装成功了
红框中的错误根据我的判断是可以忽略的,
当然你也可以解决出现这种错误:
localhost.localdomain. Set the 'ServerName' directive globally to suppress this message apache 启动出现这种错误的解决方法: 将 apache 的配置文件httpd.conf中的 ServerName 改成可用域名或如下配置 ServerName localhost:80
你在浏览器中输入http://localhost,如果出现以下页面,说明你的apache已经安装成功了。
安装参考链接参考链接
2.php的安装
下载地址:https://windows.php.net/downloads/releases/
然后将下载的文件解压到wamp目录下的php文件夹(不要下载非线程安全的版本,里面没有phpX(5,7)apache2_4.dll的拓展文件),配置apache的时候要用到。
3.下载MySQL
接下来就是下载MySQL链接地址https://dev.mysql.com/downloads/mysql/,
我是下载的MySQL5.7版本的,根据你的操作系统下载32bit或者64bit
将下载的文件解压到wamp目录下的mysql文件夹。
4.修改配置文件
打开D:/wamp/apache/conf文件夹下的httpd.conf文件
找到#LoadModule xml2enc_module modules/mod_xml2enc.so这一行,在这一行下面添加一下内容
PHPIniDir "C:/wamp/php5.6/"
LoadModule php5_module "C:/wamp/php5.6/php5apache2_4.dll" (注意点: 如果是安装的php7以上版本,则这里需要修改php7_module)
然后再找到 AddType application/x-gzip .gz .tg 这一行再下面添加
AddType application/x-httpd-php .php
apache的配置算是完成了。
然后再打开D:/wamp/php 文件夹下的php.ini-developement文件的文件名改为php.ini,然后对文件进行编辑,
; extension_dir = "./"
; On windows:
extension_dir = "d:/wamp/php5.6/ext"
date.timezone = Asia/Shanghai
取消此行的注释,并且填写ext文件夹的实际路径.
然后就是开启一些php的扩展文件
接下来就是配置MySQL了,打开进入到D:/wamp/mysql目录下新建my.ini配置文件,贴入一下内容
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\wamp\mysql # 设置mysql数据库的数据的存放目录 datadir=D:\wamp\mysql\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
以管理员的身份运行cmd,进入到D:/wamp/mysql/bin目录下安装MySQL服务,输入mysqld install(注意:是mysqld不是mysql)
命令行显示该行,表示安装成功
接下来输入mysqld --initialize创建data文件夹,否则后面无法启动MySQL服务;
然后输入net start mysql就可以启动MySQL服务了
输入mysql -u root -p,然后输入密码即可连接MySQL服务
可能会出现以下错误
这里现在下载的MySQL版本默认都不支持无密码验证,需要我们手动设置修改,打开my.ini文件,在文件末尾加上一句:
skip-grant-tables
然后重启MySQL(net stop mysql/net start mysql),此时可以不用密码进行连接,但许多功能受到了限制。先连接MySQL,然后选择user数据库修改root用户的密码。
update user set authentication_string=password("你设置的密码") where user = "root";
断开MySQL连接,将设置文件my.ini文件里刚刚加入的skip-grant-tables删除,重启MySQL服务,使用你设置的密码登陆。
涉及点:
1. 创建一个MySQL用户
create user exuser@'%' identified by 'exPass@352';
mysql> show create user xing@'%'; +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | CREATE USER for xing@% | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | CREATE USER 'xing'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
create user tt@'%' identified by '123456' password expire interval 30 day; //创建一个有过期时间的账号
select user,host,password_expired,password_last_changed,password_lifetime from user; //确定最后一次密码修改时间 show global variables like 'default_password_lifetime'; //查看密码过期时间 show create user tstuser@'localhost'; //确定用户是不是用的mysql全局的密码过期策略 最终确定是否密码过期
修改密码以能够在客户端登陆:set password for root@localhost = password('123'); 修改root密码永不过期:ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
2. PHP文件解析问题
刚开始安装成功之后,访问的时候Apache并不能解析PHP文件
#LoadModule vhost_alias_module modules/mod_vhost_alias.so //去除注释 LoadModule php5_module "D:/Develop/PHP/php5apache2_2.dll" //解析PHP文件 PHPIniDir "D:/Develop/PHP" // php根目录 AddType application/x-httpd-php .php .html .htm // 支持的文件类型 DirectoryIndex index.php index.html // 设置目录默认文件
注意点:
1. 如果配置出现问题(MySQL,PHP)则修改之后进行重新启动Apache
httpd -k restart httpd --help 查看常用命令
2. 数据库无法远程连接
grant all privileges on *.* to 'root'@'%' identified by '123456'; 重新加载权限 flush privileges;
问题总结:
1.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
这种情况是因为密码有一个过期时间,可以通过命令查看 default_password_lifetime
show variables like 'default_password_lifetime';
解决:
alter user user() identified by "123456";
2. 有时候启动Apache的时候会报错,可能是io错误,或者是日志等错误,最终都是因为不是超级管理员导致的错误,所以运行Apache的时候要使用超级管理员的权限运行可以解决许多问题