我使用Mac来开发三个项目:一个Android应用程序,一个iPhone应用程序和一个Symfony项目。
我的Symfony项目使用Redis和APCu扩展名。 (6个月前)通过PECL使用以下方法安装:
sudo pecl install redis
和
sudo pecl install apcu
昨天,将我的mac更新到Mojave,并尝试照常启动PHP的内置Web服务器后,出现以下错误:
试图从全局名称空间中加载类“ Redis”。你是否 忘记了“使用”声明?
我还注意到php.ini
在安装过程中被删除,因此我使用php.ini-previous
再次生成php.ini
。
还重新安装了命令行工具(在安装过程中已删除):
xcode-select --install
最后,我再次尝试通过PECL安装redis扩展:
sudo pecl install redis
这一次PECL引发错误:
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/libtool --mode=compile cc -I. -I/private/tmp/pear/temp/redis -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/include -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/main -I/private/tmp/pear/temp/redis -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/redis/redis.c -o redis.lo
mkdir .libs
cc -I. -I/private/tmp/pear/temp/redis -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/include -I/private/tmp/pear/temp/pear-build-root1vQ0zO/redis-4.1.1/main -I/private/tmp/pear/temp/redis -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /private/tmp/pear/temp/redis/redis.c -fno-common -DPIC -o .libs/redis.o
In file included from /private/tmp/pear/temp/redis/redis.c:27:
/private/tmp/pear/temp/redis/common.h:1:10: fatal error: 'php.h' file not found
#include "php.h"
^~~~~~~
1 error generated.
make: *** [redis.lo] Error 1
ERROR: `make' failed
如何解决此问题?
答案 0 :(得分:4)
运行以下命令将重新安装开发人员工具头文件并解决该问题。
$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
答案 1 :(得分:0)
您想要做
$ locate php.h
结果应类似于:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main/php.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php/main/php.h
接下来,您将要禁用SIP,以便可以在/usr/include
中创建一个文件夹,并将php dev依赖项符号链接到该文件夹。重新启动计算机,然后在重新启动时按住cmd + R
,从实用程序菜单中选择终端。
运行# csrutil disable && shutdown -r now
这将禁用SIP并重新启动计算机。
启动后,您将想要创建我们所讨论的文件夹,sudo mkdir /usr/include
接下来,我们创建一个符号链接,指向php dev文件所在的位置
$ ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php /usr/include
您仍然必须启用SIP,因此这次您将在运行时重新启动到恢复模式
# csrutil enable && shutdown -r now
,仅此而已。