好的,感谢 Derek 的帮助,我成功了。以下是我为完整的 Mac PHP 开发设置所做的工作:
0) 如果尚未安装,请安装必备软件(自制软件、xcode 等)
Xcode 命令行工具:
$ xcode-select --install
自制:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Catalina Required Libraries:
Catalina 所需的库:
$ brew install openldap libiconv
1)完全卸载php、httpd(apache),并删除xdebug文件(如果你已经安装了它们):
$ brew update
$ brew upgrade
$ brew cleanup
$ brew list | grep php
根据brew list命令找到您安装的任何版本的php,然后卸载它们,例如:
brew uninstall --force php72
清理所有旧的 php 配置
rm -Rf /usr/local/etc/php/*
2)安装阿帕奇
如果您已经运行内置 Apache,则需要先将其关闭,并删除所有自动加载脚本:
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
安装阿帕奇:
$ brew install httpd
设置 Apache 自动启动:
$ sudo brew services start httpd
您现在应该可以访问http://本地主机:8080并看到“It Works”消息。
3)配置Apache
使用您最喜欢的文本编辑器,打开/usr/local/etc/httpd/httpd.conf
找到显示以下内容的行Listen 8080
并将其更改为Listen 80
如果需要,请更改为您提供网站服务的默认目录。搜索该词DocumentRoot
并将值更改为您想要的位置。我用了:
/Library/WebServer/Documents
但你可以把它放在任何你喜欢的地方(例如/Users/your_user/Sites
例如)
您还需要更改 DocumentRoot 行正下方的标记引用。这也应该更改为指向您的新文档根目录:
/Library/WebServer/Documents
在同一块中,您将找到一个AllowOverride 设置,应将其更改为:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
另外,我们现在应该启用默认情况下被注释掉的 mod_rewrite 。搜索 mod_rewrite.so 并通过删除前导 # 取消注释该行:
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
更改用户和组以匹配您当前登录的用户:
User your_user
Group staff
将服务器名称更改为localhost
保存文件。
重新启动 Apache 以确保您的更改生效:
$ sudo apachectl -k restart
3)安装PHP
我安装了 php 7.2,尽管它不是最新的,只是因为我的托管站点和 WordPress 使用 php 7.2,并且我想将我的 php 应用程序与我的 WordPress 站点集成。
$ brew install [email protected]
安装 php 后,返回到 httpd.conf 文件并添加以下行:
LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
在之前未注释的 LoadModule 下方重写上一步中的 _module 。
此外,您还必须显式设置 PHP 的目录索引,因此搜索此块:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
复制并替换为:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
保存文件并再次重新启动 apache 服务器:
$ sudo apachectl -k restart
4) 验证php安装
只需在您之前使用此语句创建的 Sites/ 文件夹中创建一个名为 info.php 的文件即可。
echo "<?php phpinfo();" > ~/Sites/info.php
将您的浏览器指向http://localhost/info.php您应该会看到一个 PHP 信息页面。
作为安装过程的一部分,Homebrew 应该将其首选 /usr/local/bin 和 /usr/local/sbin 添加到您的路径中。通过键入以下内容快速测试:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin
如果您没有看到此内容,您可能需要将它们手动添加到您的路径中。根据您使用的 shell,您可能需要将此行添加到 ~/.profile、~/.bash_profile 或 ~/.zshrc:
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
5)安装Xdebug。
如果命令:
$ pecl install xdebug
由于 phpize 未返回正确的信息而失败,或者它试图写入它无法写入的文件夹,或者它找不到 php.h 等,就像它对我所做的那样以及这篇文章的开头,请尝试以下操作:
首先,您需要确保已安装 Xcode 和命令行工具。打开终端窗口并运行以下命令以显示 SDK 路径:
$ xcrun --show-sdk-path
该命令应该输出如下内容:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
如果没有,请使用步骤 0 中列出的命令安装它们。
现在在您的主文件夹中为 phpize 创建一个新文件夹:
$ mkdir ~/php-private/
并将以下文件复制到其中:
$ cp /usr/bin/phpize ~/php-private/
打开文本编辑器,并使用以下补丁代码创建一个文件:
--- /usr/bin/phpize 2019-09-11 02:46:18.000000000 +0200
+++ ./phpize 2019-12-26 23:10:32.000000000 +0100
@@ -1,11 +1,12 @@
#!/bin/sh
# Variable declaration
+XCODE_SDK_ROOT=$(/usr/bin/xcrun --show-sdk-path)
prefix='/usr'
datarootdir='/usr/php'
exec_prefix="`eval echo ${prefix}`"
phpdir="`eval echo ${exec_prefix}/lib/php`/build"
-includedir="`eval echo ${prefix}/include`/php"
+includedir="`eval echo ${XCODE_SDK_ROOT}${prefix}/include`/php"
builddir="`pwd`"
SED="/usr/bin/sed"
将该文件另存为 phpize-catalina.patch 到新的 php-private 文件夹中(也请确保 cd 到该文件夹中)。
接下来修补您的新 phpize 副本:
$ patch ~/php-private/phpize < phpize-catalina.patch
接下来,下载xdebug的最新源文件,对我来说是2.9.0
$ git clone git://github.com/xdebug/xdebug.git
这应该已将所有源文件下载到 ~/xdebug 路径。将目录更改为该路径。
$ cd ~/xdebug
现在运行我们修补的 phpize 文件:
$ ~/php-private/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。尝试:
$ brew install autoconf
一旦收到 phpize 的上述输出,请配置并安装 xdebug:
./configure --with-php-config=/usr/local/opt/[email protected]/bin/php-config
这应该使用您在步骤 3 中通过 homebrew 安装的 php 配置。
现在构建扩展:
$ make
现在安装它:
$ make install
您应该看到类似以下内容:
Installing shared extensions: /usr/local/Cellar/[email protected]/7.2.26/pecl/20170718/
+----------------------------------------------------------------------+
| |
| INSTALLATION INSTRUCTIONS |
| ========================= |
| |
| See https://xdebug.org/install.php#configure-php for instructions |
| on how to enable Xdebug for PHP. |
| |
| Documentation is available online as well: |
| - A list of all settings: https://xdebug.org/docs-settings.php |
| - A list of all functions: https://xdebug.org/docs-functions.php |
| - Profiling instructions: https://xdebug.org/docs-profiling2.php |
| - Remote debugging: https://xdebug.org/docs-debugger.php |
| |
| |
| NOTE: Please disregard the message |
| You should add "extension=xdebug.so" to php.ini |
| that is emitted by the PECL installer. This does not work for |
| Xdebug. |
| |
+----------------------------------------------------------------------+
现在您需要将扩展添加到您的 php.ini 文件中。使用您喜欢的编辑器进行修改/usr/local/etc/php/7.2/php.ini
(打开文本编辑器时不要忘记 sudo)并将其添加到最底部:
[xdebug]
zend_extension=/usr/local/Cellar/[email protected]/7.2.26/pecl/20170718/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
请注意,您真正需要添加的是 zend_extension 行,但为了让它与 Eclipse 一起工作,我使用了远程启用标志以及那里列出的其他设置。
最后,重新启动apache:
$ sudo apachectl -k restart
然后,当您刷新之前创建的 info.php 页面时,您应该会在配置中看到 xdebug 行。就像是:
成功的 xdebug 验证
6) 最后,为了我完整的 PHP mac 开发设置,我安装了最新版本的 php for eclipse(来自他们的网站)以及 SQL Server(使用自制软件)。您可以通过谷歌搜索如何安装它们,因为它们非常简单。