由于之前安装的 XAMPP 出现了一些 BUG ,决定卸载重装,也把相关的配置记录一下,也能给予新手一些帮助。
或许有人认为直接将 Finder
中的 应用程序
目录下的 XAMPP
文件夹放入废纸篓即可,但其实这样直接删除会有一些进程并未关闭,导致与其关联的文件或注册表并未删除,例如,Mysql 服务器可能仍保持运行。所以在卸载 XAMPP
前需要将相关进程关闭,然后进行卸载。关闭相关进程的操作可以借鉴《How to uninstall XAMPP on Mac OS X?》。
在关闭了相关进程后,可以在 应用程序
中的 XAMPP
文件夹下找到应用程序 uninstall
,通过这个程序可以干净的卸载 XAMPP
,卸载后残留的 XAMPP
文件夹放入废纸篓即可。
之前是有试过安装 XAMPP-VM
版本的,XAMPP-VM
是 OS X 的虚拟机。它包括 Apache,PHP 和其他 XAMPP 组件,并在 OS X 系统上的基于 Linux 的虚拟机中运行这些组件。
但由于在虚拟机上运行不能设置访问外部文件,所以选择安装 XAMPP for OS X 7.3.1
版本,着这是 OS X 的本机安装程序。它直接在 OS X 系统的 /Applications/XAMPP
文件夹中安装 Apache,PHP 其他 XAMPP 组件。
打开官网连接 https://www.apachefriends.org/download.html 选择相应的 XAMPP
下载安装程序。
安装过程非常简单,其中值得注意的只有一步是选择相应的组件,不要改动供选择的两个组件,其中 XAMPP Core Files
包括了 Apache
、MySQL
、PHP
,而选择使用 XAMPP
其中一个原因就是包含了这些组件,省下了许多配置动作。这两个组件对于非 XAMPP 开发人员来说是必须的,如果少安装一个组件会导致配置起来相对麻烦些。
打开软件启动服务器,在 Manage Servers
面板点击 Start all
启动所有服务器,直到三个 Server 状态都为绿色。如果出现 Apache
或 MySQL
无法启动,比较常见的原因是端口被占用了,可以在 Configure
中更改端口再尝试开启,当然具体情况具体分析。
当服务器都开启成功后,点击 Welcome
面板中的 Go to Application
,在浏览器中出现下面的页面,这时 XAMPP
已经可以正常运行了。
/Applications/XAMPP/xamppfiles/etc
找到 httpd.conf
文件。# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
...
------------------------------------------------------------------------
更改为指向服务器启动目录
------------------------------------------------------------------------
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "服务器启动目录"
...
禁止访问!
您无权访问所请求的目录。 这是由于没有主页或该目录不允许被读取导致的。
如果您认为这是一个服务器错误,请联系网站管理员。
Error 403
localhost
Apache/2.4.37 (Unix) OpenSSL/1.0.2q PHP/7.3.1 mod_perl/2.0.8-dev Perl/v5.16.3
httpd.conf
中的 User daemon
修改为 User Mac的用户名
来获取 Mac 用户的读写权限,修改完成即可在 localhost 看到默认路径目录下的 PHP 文件运行了,如:
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User fichin
Group daemon
Group daemon
也修改了,否则会出现错误,可以在 Application log
中看到:AH00544: httpd: bad group name XXXX
首先在根目录新建文件 index.php
,调用 phpinfo()
函数输出 PHP 版本信息,打开 localhost
输出 phpinfo()
,或者将工作目录指回 XAMPP
默认目录,然后 Go to Application
在 PHPinfo
选项中查看。右键查看网页源码,将源码全部复制,打开链接:https://xdebug.org/wizard.php ,将复制的内容粘贴进空白文本表单中,点击 Analyse my phpinfo() output
按钮,查看定制下载和安装说明。(也可以使用终端指令输出 php -i > info.txt 文件
,复制 info.txt
文件中的内容)
跳转页面后可以看到定制下载和安装说明,XAMPP
中的 PHP 是 7.3.1
的版本,提示我下载的是 xdebug-2.7.0RC2.tgz
,接着根据安装说明进行操作,将压缩包解压,打开终端指向路径 xdebug-2.7.0RC2
。
运行 phpize
如果直接在终端输入指令运行 phpize
,运行的是 Mac 自安装的 phpize
,这里要找到 XAMPP
的 phpize
路径,XAMPP
的路径是
$ cd /Users/fichin/Downloads/xdebug-2.7.0RC2/xdebug-2.7.0RC2
$ /Applications/XAMPP/xamppfiles/bin/phpize
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
这时在终端输入上面的路径指令运行 XAMPP
的 phpize
,如果顺利则输出编译环境。
如果出现错误
$ /Applications/XAMPP/xamppfiles/bin/phpize
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
Cannot find autoconf. Please check your autoconf
installation and the $PHP_AUTOCONF environment
variable. Then, rerun this script.
这是缺少 autoconf
可以参考文章《MAC 安装 PHP 扩展 pcntl 》,先安装 brew
,在终端输入以下指令
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(如果以上链接失效的话,可以到 brew
官网查看。http://brew.sh/)
安装完 brew
后,输入下面的指令安装 autoconf
:
$ brew install autoconf
之后继续执行
$ /Applications/XAMPP/xamppfiles/bin/phpize
./configure
,而是要使用绝对路径进行编译,找到 XAMPP
的 configure
路径,在终端输入:$ ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config
checking for grep that handles long lines and -e... /usr/bin/grep
...
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
make
执行完成会在 modules
文件夹下生成一个 xdebug.so
文件:$ make
...
...
Build complete.
Don't forget to run 'make test'.
xdebug.so
复制到 XAMPP
的扩展目录:$ sudo cp modules/xdebug.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731
Password:
需要 sudo
输入密码以管理员身份运行。(也可以直接在 xdebug-2.7.0RC2
文件下的 modules
文件夹中找到 xdebug.so
,将其复制到 XAMPP
的 PHP 扩展目录。
XAMPP
安装目录的 /Applications/XAMPP/xamppfiles/etc
子目录中的 php.ini 文件。在此文件中,通过向其添加以下行来激活 Xdebug
作为 Zend
扩展进行加载:[XDebug]
zend_extension = xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
extension=xdebug.so
来加载 Xdebug
,但是这种方式并不正确,PHPinfo
会提示 Xdebug
作为PHP扩展而不是作为 Zend 扩展加载。复制上面方式输出的 phpinfo()
到 https://xdebug.org/wizard.php 分析,能够看到提醒以及解决方式。php.ini
文件中将 extension=xdebug.so
这一行删除,并且加入 zend_extension=xdebug.so
。能够在 PHPinfo
看到以 Zend
扩展进行加载的提示:作为普通扩展的方式并不能启用 VScode
的断点调试功能,正确的方式应该是以 Zend
扩展进行加载。
在 VS code
下载 PHP Debug
插件,重新加载。
在 User Settings
配置 PHP 目录,编写 settings.json
覆盖默认设置:
"php.executablePath": "/Applications/XAMPP/xamppfiles/bin/php-7.3.1"
launch.json
文件,应该将该文件删除。在调试区选择 PHP 环境,调试边上的下拉框,选择 Listen for XDebug
。XAMPP
已经自带 phpMyAdmin
,而且在刚安装好 XAMPP
时,phpMyAdmin
可以正常使用,但是当修改了 httpd.conf
中的 User daemon
后,会出现错误:phpMyAdmin - Error
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)
session_start(): Failed to read session data: files (path: /Applications/XAMPP/xamppfiles/temp)
httpd.conf
中的 User daemon
是为了获得 Mac 用户的文件夹读写权限,但是却失去了 /Applications/XAMPP/xamppfiles/temp
的读写权限,所以解决方法是为 /Applications/XAMPP/xamppfiles/temp
赋予读写权限:$ sudo chmod -R 777 /Applications/XAMPP/xamppfiles/temp/
phpMyAdmin
仍然可能出现错误:phpMyAdmin - Error
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
session_start(): Session data file is not created by your uid
session_start(): Failed to read session data: files (path: /Applications/XAMPP/xamppfiles/temp)
/Applications/XAMPP/xamppfiles/temp
文件夹下的 Session 文件删除。然后再打开 phpMyAdmin
即可正常使用。