本文编写于 564 天前,最后修改于 564 天前,其中某些信息可能已经过时。

Xampp 下使用phpize显示No such file or directory解决方案

[toc]

最近要对接websocket,需要用到swoole扩展库,于是按着教程来操作

先下载源码,然后手动编译,安装

如代码所示,但这个不适用,仅参考,适用于xampp的在下面

cd swoole
phpize (ubuntu 没有安装phpize可执行命令:sudo apt-get install php-dev来安装phpize)
./configure
make 
sudo make install

然而实际上到phpize这一步就会报错,因为我使用的是xampp集成环境,不是直接安装在系统根目录下,所以会出现以下错误

me@MacBook-Pro  ~/Downloads/swoole-src-4.4.12  phpize
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:  

意思就是没找到对应文件夹,那当然,我的php在xampp里面呢,自然不会显示,那么如何解决呢

解决方案

执行xampp内置的phpize即可

先找到phpize

一般来说macOS安装的xampp目录为

/Applications/XAMPP/xamppfiles

那么phpize文件就在

/Applications/XAMPP/xamppfiles/bin/phpize

这里,直接扔进terminal执行就好,也就是说要运行phpize命令,需要写全phpize的路径

但别退出swoole的目录

执行之后就不会报错了

显示

me@MacBook-Pro  ~/Downloads/swoole-src-4.4.12 > /Applications/XAMPP/xamppfiles/bin/phpize
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

phpize安装成功了

然后按操作执行就好

修改configure 安装路径

然后又发现第五步make出错了

按下面的老哥的方法发现,输入./configure时需要配置时要将php-config的路径附上

那么我这里应该输入

./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config

这个是xampp/bin目录下的一些文件

然后发现这回编译就不会报错了

那我们最后一步sudo make install即可

安装成功!!

总结

全局代码如下,请根据自己的xampp目录进行设置

cd swoole
/Applications/XAMPP/xamppfiles/bin/phpize 
./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config
make 
sudo make install

第二种方法

PECL

注意: PECL发布时间晚于Github发布时间

Swoole项目已收录到PHP官方扩展库,除了手工下载编译外,还可以通过PHP官方提供的pecl命令,一键下载安装

pecl install swoole

以下的方案可借鉴????

phpize建立软连接

这里非常非常感谢这位老哥的博文

使用phpize安装php扩展

这里直接摘抄一下原文

原文解决方案

报错

grep: /Applications/MAMP/bin/php/php5.6.10/include/php/main/php.h: No such file or directory
grep: /Applications/MAMP/bin/php/php5.6.10/include/php/Zend/zend_modules.h: No such file or directory
grep: /Applications/MAMP/bin/php/php5.6.10/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:

原因

/Applications/MAMP/bin/php/php5.6.10/下缺少include文件夹

因为MAMP把include移到了/usr/include

所以可以做了一个软连接,先在/Applications/MAMP/bin/php/php5.6.10/下创建空include文件夹,然后执行

ln -s /usr/include/php /Applications/MAMP/bin/php/php5.6.10/include/

如果接下来的make步骤也报错了,并提示

fatal error: ‘pcre.h‘ file not found

解决办法:brew install pcre

那有可能解决方案就是

使用ln命令建立软连接

ln命令详解

ln是linux中又一个非常重要命令,请大家一定要熟悉。

它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s具体用法是:ln –s 源文件 目标文件

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

例如:ln –s /bin/less /usr/local/bin/less -s 是符号链接(symbolic)的意思。

语法
ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录]

ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录...][目的目录]

使用

ln -s 报错位置的include目录 xampp的include目录

也就是

ln -s /usr/include/ /Applications/XAMPP/xamppfiles/include/php/include/

然而并没有什么卵用,看上面的方法吧

不过还是感谢老哥

参考文献

  1. 官方编译安装教程
  2. 感谢小哥!使用phpize安装php扩展