MacOS 14 搭建 PHP7.4 + Xdebug开发环境

摘要

项目使用的技术栈:PHP 7.4.33、ThinkPHP 5.1.27、Redis、MySQL
由于MacOS预装的PHP版本较高,所以需要降级
IDE 使用 PhpStorm 2023.2.3

1. 安装PHP 7.4.33

MacOS 14中的brew版本比较高,没有低版本的PHP

brew install shivammathur/php/php@7.4-debug

2. 切换版本

#断开链接php8.3版本
brew unlink php@8.3
#链接php7.4版本
brew link php@7.4-debug

3. 安装xdebug模块

3.1 确认xdebug版本

将phpinfo()粘贴到xdebug提供的安装向导页面 Installation Wizard
image.png

3.2 安装xdebug

根据上一步中分析的结果,安装对应版本的xdebug
image.png

4. 安装Redis模块

4.1 下载Redis模块的源码包

地址:http://pecl.php.net/package/redis

4.2 安装

解压缩后进入目录
Downloads/redis-5.0.2/redis-5.0.2

liyang@liyangdeMBP redis-5.0.2 % ll
total 3656
drwxr-xr-x@ 56 liyang  staff    1792  4  3 09:48 ./
drwxr-xr-x@  5 liyang  staff     160  4  3 09:42 ../
drwxr-xr-x  14 liyang  staff     448  4  3 09:48 .libs/
-rw-r--r--@  1 liyang  staff    3218  7 29  2019 COPYING
-rw-r--r--@  1 liyang  staff     204  7 29  2019 CREDITS
-rw-r--r--@  1 liyang  staff    3602  7 29  2019 INSTALL.markdown
-rw-r--r--   1 liyang  staff   11894  4  3 09:48 Makefile
-rw-r--r--   1 liyang  staff       0  4  3 09:48 Makefile.fragments
-rw-r--r--   1 liyang  staff    2802  4  3 09:48 Makefile.objects
-rw-r--r--@  1 liyang  staff  119355  7 29  2019 README.markdown
-rw-r--r--@  1 liyang  staff   10019  7 29  2019 arrays.markdown
drwxr-xr-x   7 liyang  staff     224  4  3 09:45 autom4te.cache/
drwxr-xr-x  13 liyang  staff     416  4  3 09:45 build/
-rw-r--r--@  1 liyang  staff   10988  7 29  2019 cluster.markdown
-rw-r--r--@  1 liyang  staff   83920  7 29  2019 cluster_library.c
-rw-r--r--@  1 liyang  staff   18106  7 29  2019 cluster_library.h
-rw-r--r--   1 liyang  staff     321  4  3 09:48 cluster_library.lo
-rw-r--r--@  1 liyang  staff   19955  7 29  2019 common.h
-rw-r--r--   1 liyang  staff    2131  4  3 09:45 config.h
-rw-r--r--   1 liyang  staff    2006  4  3 09:48 config.h.in
-rw-r--r--   1 liyang  staff   18298  4  3 09:48 config.log
-rw-r--r--@  1 liyang  staff    7802  7 29  2019 config.m4
-rwxr-xr-x   1 liyang  staff     139  4  3 09:48 config.nice*
-rwxr-xr-x   1 liyang  staff   21221  4  3 09:48 config.status*
-rw-r--r--@  1 liyang  staff     923  7 29  2019 config.w32
-rwxr-xr-x   1 liyang  staff  475668  4  3 09:45 configure*
-rw-r--r--   1 liyang  staff    5082  4  3 09:45 configure.ac
-rw-r--r--@  1 liyang  staff    4483  7 29  2019 crc16.h
drwxr-xr-x   2 liyang  staff      64  4  3 09:45 include/
drwxr-xr-x@  8 liyang  staff     256  4  3 09:42 liblzf/
-rw-r--r--@  1 liyang  staff   78234  7 29  2019 library.c
-rw-r--r--@  1 liyang  staff    8056  7 29  2019 library.h
-rw-r--r--   1 liyang  staff     305  4  3 09:48 library.lo
-rwxr-xr-x   1 liyang  staff  211007  4  3 09:48 libtool*
drwxr-xr-x   3 liyang  staff      96  4  3 09:48 modules/
-rw-r--r--@  1 liyang  staff    8509  7 29  2019 php_redis.h
-rw-r--r--@  1 liyang  staff  116912  7 29  2019 redis.c
-rw-r--r--   1 liyang  staff     802  4  3 09:48 redis.la
-rw-r--r--   1 liyang  staff     301  4  3 09:48 redis.lo
-rw-r--r--@  1 liyang  staff   40509  7 29  2019 redis_array.c
-rw-r--r--@  1 liyang  staff    2281  7 29  2019 redis_array.h
-rw-r--r--   1 liyang  staff     313  4  3 09:48 redis_array.lo
-rw-r--r--@  1 liyang  staff   40728  7 29  2019 redis_array_impl.c
-rw-r--r--@  1 liyang  staff    1350  7 29  2019 redis_array_impl.h
-rw-r--r--   1 liyang  staff     323  4  3 09:48 redis_array_impl.lo
-rw-r--r--@  1 liyang  staff  106555  7 29  2019 redis_cluster.c
-rw-r--r--@  1 liyang  staff   10438  7 29  2019 redis_cluster.h
-rw-r--r--   1 liyang  staff     317  4  3 09:48 redis_cluster.lo
-rw-r--r--@  1 liyang  staff  130272  7 29  2019 redis_commands.c
-rw-r--r--@  1 liyang  staff   13712  7 29  2019 redis_commands.h
-rw-r--r--   1 liyang  staff     319  4  3 09:48 redis_commands.lo
-rw-r--r--@  1 liyang  staff   35238  7 29  2019 redis_session.c
-rw-r--r--@  1 liyang  staff     511  7 29  2019 redis_session.h
-rw-r--r--   1 liyang  staff     317  4  3 09:48 redis_session.lo
-r-xr-xr-x   1 liyang  staff  127055  4  3 09:45 run-tests.php*
drwxr-xr-x@ 12 liyang  staff     384  4  3 09:42 tests/

按顺序执行命令

liyang@liyangdeMBP redis-5.0.2 % phpize
liyang@liyangdeMBP redis-5.0.2 % ./configure --with-php-config=/opt/homebrew/Cellar/php@7.4-debug/7.4.33_6/bin/php-config
liyang@liyangdeMBP redis-5.0.2 % make && make install

5. 修改php.ini配置

增加xdebug和Redis扩展

zend_extension = "/opt/homebrew/lib/php/pecl/20190902-debug/xdebug.so"
xdebug.remote_handler="dbgp"
xdebug.client_host=localhost
xdebug.client_port=9001
xdebug.idekey=phpstorm
xdebug.start_with_request=yes
xdebug.mode=debugextension="/opt/homebrew/lib/php/pecl/20190902-debug/redis.so"

6. 配置PhpStorm,使可以debug

6.1 配置PHP解释器

image.png

6.2 配置xdebug端口

端口应该和php.ini中的一致
image.png

6.3 配置DBGp代理

这里的ide键就是php.ini文件中的xdebug.idekey的值
image.png

参考

PECL::Package::redis
mac 安装php扩展(redis为例)
在 macOS 上的多个 PHP 版本之间切换
# Installation Wizard
手把手完成mac下配置phpstorm的xdebug3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的汽车尾灯控制系统设计

**单片机设计介绍,基于单片机的汽车尾灯控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的汽车尾灯控制系统设计概要主要涵盖利用单片机技术实现对汽车尾灯的智能控制。下面将从系统构成、工作…

C++函数匹配机制

函数匹配 在大多数情况下,我们容易确定某次调用应该选用哪个重载函数。 然而,当几个重载函数的形参数量相等以及某些形参的类型可以由其他类型转换得来时,这项工作就不那么容易了。 以下面这组函数及其调用为例: void f(); vo…

013——超声波模块驱动开发(基于I.MX6uLL与SR04)

目录 一、 模块介绍 1.1 产品特色 1.2 产品实物图 1.3 接口定义 1.4 测距调节 1.5 模块工作原理 1.6 注意 二、 编码思路 三、 驱动程序 四、 应用程序 五、 Makefile 六、 其它及实验 一、 模块介绍 超声波测距模块是利用超声波来测距。模块先发送超声波&#xf…

gitlab代码迁移,包含历史提交记录、标签、分支

1、克隆现有的GitLab仓库(http://localhost:8888/aa/bb/cc.git)到本地,包括所有分支和标签 git clone --bare http://localhost:8888/aa/bb/cc.git 2、在gitlab上创建一个空的仓库(http://localhost:7777/aa/bb/cc.git&#xff…

微服务连接不上rabbitmq解决

1.把端口port: 15672改成port:5672 2:virtual-host: my_vhost一定对应上

Android Studio 打开Logcat界面

在平时调试过程中查看调试日志需要打开 Android Studio Logcat界面。 每次安装AS都会忘记,自己备注一下。 AS->View->Tool Windows->Logcat

AR/VR技术对制造业劳动力危机的影响

借助 AR/VR 的力量缩小现代制造业的技能差距 数字化转型仍然是企业的首要任务,其许多方面都需要人工干预。然而,推动此类举措所需的技术工人日益短缺。这就造成了我们所说的“制造业劳动力危机”。 制造业应当如何: 制造业用工危机正在影响…

uniapp微信小程序真机图片不显示

不同设备可能出现部分设备显示不了图片,解决办法:图片地址直接使用,不要拼接: https://images.weserv.nl/?urlhttp

无法打开pycharm虚拟环境

问题:在pycharm的terminal中执行pip命令,但是下载的包没有安装到该项目的虚拟环境中。 激活虚拟环境,打开terminal,执行myenv\Scripts\activate,显示执行出错 无法加载文件 D:\Project\RF_Project\venv\Scripts\acti…

如何在Java中,使用jackson实现json缩进美化

导入的maven依赖 <!--json--> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.10.0</version> </dependency>示例代码 json要是String类型 public…

数据库管理工具 DBeaverUE for Mac激活版

DBeaverUE for Mac是一款功能强大且易于使用的数据库管理工具&#xff0c;专为Mac用户设计。它支持多种数据库类型&#xff0c;如MySQL、PostgreSQL、Oracle等&#xff0c;使得用户可以轻松管理和操作各种数据库。 软件下载&#xff1a;DBeaverUE for Mac激活版下载 DBeaverUE …

Node.js介绍

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。它是几乎任何类型的项目的流行工具&#xff01;

[C#]使用OpencvSharp去除面积较小的连通域

【C介绍】 关于opencv实现有比较好的算法&#xff0c;可以参考这个博客OpenCV去除面积较小的连通域_c#opencv 筛选小面积区域-CSDN博客 但是没有对应opencvsharp实现同类算法&#xff0c;为了照顾懂C#编程同学们&#xff0c;因此将 去除面积较小的连通域算法转成C#代码。 方…

Django複習總結

①Django是框架。那麼什麼是框架&#xff1a; 框架很像是一個骨架&#xff0c;帶有很多默認器官的骨架。我們可以根據需要改寫、複寫這些器官。 從而實現自己所需要的功能。 ②Django是MVC模型\MVT模型&#xff1a; MVC模型&#xff1a;M&#xff1a;models模型層 V&#…

uni-app开发微信小程序使用BLE低功耗蓝牙正确步骤

文章目录 前言连接逻辑建议 参考资料&#xff1a;https://www.hc01.com/downloads 前言 微信小程序通过蓝牙连接设备&#xff0c;所以需要使用到BLE连接。 思路&#xff1a; 小程序连接BLE的步骤已经知道设备的BLE名称、服务id、特征值ID。需要根据蓝牙模块提供商的说明书去…

链表之单链表

上一篇博客我们学习了线性表中的顺序表&#xff0c;这一篇博客让我们继续往下了解线性表的链表&#xff0c;链表分为好几种结构&#xff0c;活不多说&#xff0c;让我们开始学习吧&#xff01; 目录 1.链表 2.链表的结构 3.单链表的实现 1.链表 1.概念&#xff1a;它是一种物…

大创项目推荐 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

HTML - 请你谈一谈 iframe的优缺点

难度级别:中级及以上 提问概率:50% iframe是一个HTML标签,它可以在一个网页中嵌入另外一个网页,甚至是把其他的网站嵌入进来。在之前的很长时间里,内部管理系统都在使用iframe,做为菜单切换的主体模板区域框架。iframe包含一个src属性,…

php运行python脚本失败怎么解决

假设有文件&#xff1a;php_test.php python_test.py 在php文件中运行Python&#xff1a; exec("python python_test.py", $array, $ret); 如果运行Python出错并不能保存在数组array中&#xff0c;因此应该把标准错误重定向到文件中&#xff0c;以上代码改写如下&a…

【芯片验证】通关寄存器与ral_model —— 寄存器生成流程中加入backdoor后门配置

前言 【芯片验证】通关寄存器与ral_model —— backdoor后门访问实操测试-CSDN博客 上一篇文章中,我们通过在环境中配置后门路径的方式来实现了寄存器的后门访问,但是在实际应用中,无论寄存器RTL文件、例化还是寄存器模型大概率都是工具生成的,比如在本专栏中实现的gen_r…