更新到 MacOS Mojave 后无法使用 PHPIZE。

26

当我运行PHPIZE并出现以下错误时,我应该怎么做?我已经安装了Xcode命令行工具。

grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:        
Zend Module Api No:     
Zend Extension Api No:

1
你有/usr/include/php/main//usr/include/php/main/php.h吗? - Mattia Dinosaur
不,这些在我的系统上都不存在。实际上,/usr/include 文件夹不存在。也许在Mojave中有另一个文件夹? - delphirules
似乎您的操作系统移动或删除了某些文件。您可以重新安装 PHP。 - Mattia Dinosaur
我正在使用Mac Os Mojave的默认PHP安装。它可能更改了文件夹位置。 - delphirules
1
我发现这个资源非常有价值:https://bbqsoftwares.com/blog/xdebug-catalina - Mike Kormendy
4个回答

72

可能更好的解决方案——强制重新安装头文件。对我整个系统修复了很多问题。

运行下面的命令将重新安装开发者工具的头文件,应该可以解决这个问题。

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

3
不仅有潜力,而是绝对更好的解决方案。 - tuxedobob
4
谢谢。这个方法有效并修复了操作系统安装的 PHP 的所有问题。我在尝试设置 xdebug 时遇到了这个问题。 - Jabran Rafique
1
似乎新版本的Xcode可能已经删除了这个pkg。我还没有找到解决方案。 - donatJ
在运行上述命令之前,我还需要从此处重新安装Xcode开发人员工具:https://developer.apple.com/download/more/ 并且特别选择“Command Line Tools (macOS 10.14) for Xcode 10.2”。 - kk64738
3
对我来说这个不起作用。我收到以下错误:“安装失败(安装程序遇到导致安装失败的错误。请联系软件制造商寻求帮助。)” - ludovico
显示剩余4条评论

4

由于某些原因,我发现我的Mac上安装的Xcode命令行工具并没有完全安装好。最终,我按照以下步骤解决了这个问题:

 1. xcode-select --install
 2. cd /Library/Developer/CommandLineTools/Packages/ 
 3. open macOS_SDK_headers_for_macOS_10.14.pkg

注意:完成第二步后,如果目录中没有 .pkg 文件,那么这个解决方案可能无法帮助您。

2
找到phpize并进行编辑。
~$ whereis phpize
phpize: /usr/local/bin/phpize
~$ vim  /usr/local/bin/phpize

在我的phpize脚本中,它是这样的

prefix='/usr/local/php7'   ## where you should edit
datarootdir='/usr/local/php7/php'
exec_prefix="`eval echo ${prefix}`"
phpdir="`eval echo ${exec_prefix}/lib/php`/build"
includedir="`eval echo ${prefix}/include`/php"
...

phpize_get_api_numbers()
{
  # extracting API NOs:
  PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'`
  ZEND_MODULE_API_NO=`grep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO//'`
  ZEND_EXTENSION_API_NO=`grep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|$SED 's/#define ZEND_EXTENSION_API_NO//'`
}

如果您确认已经拥有头文件,但是phpize脚本的配置不正确,您可以编辑以下行:prefix='/usr/local/php7',同时注意确保php.h位于正确路径下。
$ pwd
/usr/local/php7/include/php/main
$ ls  php.*
php.h

如果没有,您可以自己编译PHP。


我的php文件夹路径是/usr/local/php5-7.1.10-20171002-090111。我编辑了prefix='/usr/local/php5-7.1.10-20171002-090111'和datarootdir='/usr/local/php5-7.1.10-20171002-090111/php',但是在调用PHPIZE时仍然出现相同的错误...有什么提示吗? - delphirules
实际上,这个文件:“/usr/include/php/main/php.h”在“/usr/local/php5-7.1.10-20171002-090111/include/php/main”目录下。 - delphirules
你有多个phpize脚本吗? - Mattia Dinosaur
1
不,我按照你建议的做法解决了问题,谢谢! - delphirules
2
现在我升级到Catalina,我遇到了同样的问题,但是即使作为sudo,我也无法再编辑phpize,我收到以下错误提示:“无法保存'phpize':命令失败:"/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" --file-write "/var/folders/dc/3d93lth116q91kx94ms37rd40000gn/T/code-elevated-dynago" "/usr/bin/phpize" 使用--file-write时出错:EPERM:操作不允许,打开'/usr/bin/phpize'”。 - delphirules
phpize 是一个只读文件,甚至不能通过 sudo 进行编辑。 - Raptor

-2

我遇到了与上述描述相同的问题,只是我试图在macOS Mojave上安装xdebug。

我通过执行以下命令解决了这个问题:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

2
重复的答案。 - donatJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接