环境
编译 PHP 7.3.4 (DEBUG)
坑,XCODE内置的版本合适
- iconv
- tidy
因为brew install php
是 bottle 版的,并不是本地编译,编译安装的时候,各种玄学。
stat /usr/local/backups || mkdir /usr/local/backups
stat /usr/local/backups/lib || mkdir /usr/local/backups/lib
stat /usr/local/backups/include || mkdir /usr/local/backups/include
sudo mv /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libiconv* /usr/local/backups/lib
sudo mv /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/libtidy* /usr/local/backups/lib
sudo mv /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib/include/tidy /usr/local/backups/include/tidy
以上脚本,小心使用
congfigure
可以从 php-config 获取,添加--enaable-debug
就行了
export LDFLAGS="-L/usr/local/opt/openssl/lib \
-L/usr/local/opt/sqlite/lib \
-L/usr/local/opt/curl-openssl/lib \
-L/usr/local/opt/webp/lib \
-L/usr/local/opt/jpeg/lib \
-L/usr/local/opt/libpng/lib \
-L/usr/local/opt/freetype/lib \
-L/usr/local/opt/gettext/lib \
-L/usr/local/opt/gmp/lib \
-L/usr/local/opt/icu4c/lib \
-L/usr/local/opt/unixodbc/lib \
-L/usr/local/opt/freetds/lib \
-L/usr/local/opt/libpq/lib \
-L/usr/local/opt/aspell/lib \
-L/usr/local/opt/libsodium/lib \
-L/usr/local/opt/argon2/lib \
-L/usr/local/opt/tidy-html5/lib \
-L/usr/local/opt/libzip/lib \
-L/usr/local/opt/libiconv/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include \
-I/usr/local/opt/sqlite/include \
-I/usr/local/opt/curl-openssl/include \
-I/usr/local/opt/webp/include \
-I/usr/local/opt/jpeg/include \
-I/usr/local/opt/libpng/include \
-I/usr/local/opt/freetype/include \
-I/usr/local/opt/gettext/include \
-I/usr/local/opt/gmp/include \
-I/usr/local/opt/icu4c/include \
-I/usr/local/opt/unixodbc/include \
-I/usr/local/opt/freetds/include \
-I/usr/local/opt/libpq/include \
-I/usr/local/opt/aspell/include \
-I/usr/local/opt/libsodium/include \
-I/usr/local/opt/argon2/include \
-I/usr/local/opt/tidy-html5/include \
-I/usr/local/opt/libzip/include \
-I/usr/local/opt/libiconv/include"
./configure \
--prefix=/usr/local/opt/php@7.3d \
--sysconfdir=/usr/local/etc/php/7.3d \
--with-config-file-path=/usr/local/etc/php/7.3d \
--with-config-file-scan-dir=/usr/local/etc/php/7.3d/conf.d \
--with-pear=/usr/local/opt/php@7.3d/share/php/pear \
--localstatedir=/usr/local/var \
--enable-bcmath \
--enable-calendar \
--enable-dba \
--enable-dtrace \
--enable-exif \
--enable-ftp \
--enable-intl \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-opcache-file \
--enable-pcntl \
--enable-phpdbg \
--enable-phpdbg-webhelper \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--enable-zip \
--with-gd \
--with-libzip \
--with-xmlrpc \
--with-pic \
--with-curl=/usr/local/opt/curl-openssl \
--with-freetype-dir=/usr/local/opt/freetype \
--with-gettext=/usr/local/opt/gettext \
--with-gmp=/usr/local/opt/gmp \
--with-icu-dir=/usr/local/opt/icu4c \
--with-jpeg-dir=/usr/local/opt/jpeg \
--with-layout=GNU \
--with-mysql-sock=/tmp/mysql.sock \
--with-mysqli=mysqlnd \
--with-openssl=/usr/local/opt/openssl \
--with-password-argon2=/usr/local/opt/argon2 \
--with-pdo-dblib=/usr/local/opt/freetds \
--with-pdo-mysql=mysqlnd \
--with-pdo-pgsql=/usr/local/opt/libpq \
--with-pdo-sqlite=/usr/local/opt/sqlite \
--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc \
--with-pgsql=/usr/local/opt/libpq \
--with-png-dir=/usr/local/opt/libpng \
--with-pspell=/usr/local/opt/aspell \
--with-sodium=/usr/local/opt/libsodium \
--with-sqlite3=/usr/local/opt/sqlite \
--with-tidy=/usr/local/opt/tidy-html5 \
--with-unixODBC=/usr/local/opt/unixodbc \
--with-webp-dir=/usr/local/opt/webp \
--with-libxml-dir=/usr/local/opt/libxml2 \
--with-iconv=/usr/local/opt/libiconv \
--with-iconv-dir=/usr/local/opt/libiconv \
--with-bz2=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--with-kerberos=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--with-libedit=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--with-mhash=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--with-ndbm=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--with-xsl=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--with-zlib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr \
--enable-debug
make && install
make -j8 #开8个线程 make
make iinstall
配置 VSCODE + LLDB
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/usr/local/opt/php@7.3d/bin/php",
"args": ["/path/to/your/file/for/debug.php"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
}]
}