macOS搭建Apache2.4 + PHP7.3 + MySQL8.0 + ThinkPHP6.0开发环境
之前在windows上搭建过 apache+php+mysql 环境,换成macbook后一切都有所不同,配置方面有些许变化。本文只是做简单的搭建教程,不做深入探讨。
windows上如何搭建参见《Win10下部署Apache+PHP+MySQL环境》。
环境要求
开发环境
操作系统: macOS Cotalina 10.15.7
web服务器: Apache 2.4
脚本: php 7.3.11 (cli)
数据库: MySQL 8.0.16
web框架:ThinkPHP 6.0
工具安装
Apache和PHP
使用的操作系统是macOS Catalina 10.15.7,自带Apache 2.4 和PHP 7.3.11
测试Apache运行
Terminal中执行指令
sudo apachectl start
浏览器中打开地址
http://localhost/
此时浏览器中显示以下内容,则表明Apache运行正常。
It Works!
Apache 常用命令见下:
# 启动Apache服务
sudo apachectl start
# 重启Apache服务
sudo apachectl restart
# 停止Apache服务
sudo apachectl stop
# 查看Apache服务
sudo apachectl -v
MySQL 8.0
可以选择直接到官网下载安装包,或是用brew 安装,可先用brew 查看哪些版本可用
antiwey@antiweys-MacBook-Pro WebServer % brew search mysql
==> Formulae
automysqlbackup mysql-client@5.7 mysql@5.6
mysql mysql-connector-c++ mysql@5.7
mysql++ mysql-sandbox mysqltuner
mysql-client mysql-search-replace
列表中并没有Mysql 8.0.16,直接在官网下载dmg安装文件,点击安装。
ThinkPHP 6.0
Composer下载及安装
ThinkPHP 6.0的安装及使用需要用到composer,参考ThinkPHP 官方指导文档。
Composer的官方下载命令见下:
curl -sS https://getcomposer.org/installer | php
由于国内下载速度太慢,可以使用国内镜像,请参见官方国内镜像指导文档进行安装,在此不赘述。
composer自动安装到了当前目录下,为使之全局可用,需要将其移动到环境变量PATH包含的路径下
sudo mv composer.phar /usr/local/bin/composer
如果网络条件好,可使用指令更新composer
composer selfupdate
或者在官方国内镜像下载并覆盖系统中的composer程序。
ThinkPHP 6.0 安装
执行以下命令:
composer create-project topthink/think tp
tp目录名可以任意更改,这个目录就是我们后面会经常提到的thinkphp应用根目录。
详细的安装教程参考官方文档
测试ThinkPHP的运行
在thinkphp的根目录中执行指令
php think run
浏览器中输入地址
http://localhost:8000/
正常情况下,会显示以下内容
:)
ThinkPHP V6.0.5 14载初心不改 - 你值得信赖的PHP框架
[ V6.0 版本由 亿速云 独家赞助发布 ]
服务配置
Apache可以直接跑ThinkPHP,但不够灵活,可将Apache配置成虚拟主机,用以配合ThinkPHP 6.0的多App方案,从而达到一个服务器管理多个网站的目的。
Apache直接启动ThinkPHP的见文章最末“Apache直接启动ThinkPHP”。
Apache配置虚拟主机
使用Apache来配置虚拟主机参见《macOS系统Apache配置虚拟主机vhost》。
php配置
更改配置文件
# /etc/apache2/httpd.conf
# 打开加载php7模块,该库存放路径在 /usr/libexec/apache2
LoadModule php7_module libexec/apache2/libphp7.so
pdo_mysql
php使用macOS Catalina自带的php7.3.11(cli)。各种教程里都提到需要打开php.ini中的extension=pdo_mysql,但macOS里无需做这一步,如果打开,反而会报如下错误:
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/extensions/no-debug-non-zts-20180731/pdo_mysql (dlopen(/usr/lib/php/extensions/no-debug-non-zts-20180731/pdo_mysql, 0x0009): dlopen(): file not found: /usr/lib/php/extensions/no-debug-non-zts-20180731/pdo_mysql), /usr/lib/php/extensions/no-debug-non-zts-20180731/pdo_mysql.so (dlopen(/usr/lib/php/extensions/no-debug-non-zts-20180731/pdo_mysql.so, 0x0009): dlopen(): file not found: /usr/lib/php/extensions/no-debug-non-zts-20180731/pdo_mysql.so)) in Unknown on line 0
应该是根本用不上pdo_mysql库。
MySQL 配置
更改连接认证方式
如果直接使用php链接mysql,会报如下错误:
PHP Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
Mysql 8.0 系统默认的验证方式从mysql_native_password 换成了caching_sha2_password,但php 7.3并不支持这样的验证方式,需要将用户的验证方式改成mysql_native_password。
查看当前mysql用户的认证方式:
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| test | % | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
更改已有账户test的认证方式:
mysql> ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'new password';
mysql> select host,user,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| test | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
更改后,即可使用php连接mysql 8.0
NOTE:如果在开发或者配置过程中报找不到mysql头文件,可以将mysql安装目录中的头文件软链接到系统路径中。
ln -s /usr/local/mysql/include/* /usr/local/include/
配置ThinkPHP 数据库设置
Thinkphp的环境配置文件在根目录下,将.example.env 改为.env,并匹配数据库信息
# tp/.env
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = servername
USERNAME = test
PASSWORD = test
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
[LANG]
default_lang = zh-cn
配置完成后,重起apache服务,在服务器中输入打开http://127.0.0.1即可打开thinkphp默认页面。
:)
ThinkPHP V6.0.5 14载初心不改 - 你值得信赖的PHP框架
[ V6.0 版本由 亿速云 独家赞助发布 ]
Apache 直接启动 ThinkPHP
这里介绍一种简单的使用Apache启动ThinkPHP的方式。
更改apahce配置文件
# /etc/apache2/httpd.conf
# 配置根目录,也就是刚刚composer下载的thinkphp public路径,public中存放着thinkphp的入口文件 index.php
DocumentRoot "/Users/antiwey/Workspace/Develop/www/tp/public"
<Directory "/Users/antiwey/Workspace/Develop/www/tp/public">
重启Apache
sudo apachectl restart
打开页面
浏览器地址栏输入 http://localhost,得到和之前测试thinkphp一样的内容
:)
ThinkPHP V6.0.5 14载初心不改 - 你值得信赖的PHP框架
[ V6.0 版本由 亿速云 独家赞助发布 ]
注意事项
-
tp/runtime 目录需要设置为可写权限,否则tp框架运行会出错。(包括log写入及session的使用)
-
如需使用session,需打开middleware.php的session开关
# /tp/app/middleware.php <?php // 全局中间件定义文件 return [ // 全局请求缓存 // \think\middleware\CheckRequestCache::class, // 多语言加载 // \think\middleware\LoadLangPack::class, // Session初始化 \think\middleware\SessionInit::class ];
- CentOS8服务器上部署Docker memos+Nginx反向代理实现外网访问
- macOS搭建Apache2.4 + PHP7.3 + MySQL8.0 + ThinkPHP6.0开发环境
- macOS系统Apache配置虚拟主机vhost
- Win10下部署Apache+PHP+MySQL环境
- ubuntu18.04下安装ss-qt5并配置Chrome和Terminal科学上网
- 一个定制微信朋友圈截图的小程序示例
- Windows上RobotFramework&RIDE的环境部署
- [解决]Github pages 无法自动更新
- 利用 Github Pages 搭建博客
- Windows上部署Jekyll