如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

在学习swoole的过程中,您可能会碰到phpx的概念。那么在phpx的编译过程中,就很可能会碰到本文中的错误信息,提示无法找到php.h文件。.h文件是c语言文件编译的时候的头文件。这个php.h,看上去就应该是php的共享库文件。那么没有找到php.h文件,意思就是没有识别到phplib的位置。这种类似的情况,以前在编译php程序主体的时候,有碰到过。详见文末链接。

phpx 编译错误:php.h: No such file or directory - phpx-error-phplib
phpx 编译错误:php.h: No such file or directory(图5-1)

那么如何解决这个无法找到php.h的问题呢?请看本篇文章描述。
本文测试环境:centos7宝塔@6.8.8php72swoole@4.2.12phpx@0.0.2

错误提示:

phpx的编译过程中的第二个步骤的时候,也就是make -j 4这个步骤的时候,可能会看到如下信息:

fatal error: php.h: No such file or directory

phpx 编译错误:php.h: No such file or directory - make-j-4
phpx 编译错误:php.h: No such file or directory(图5-2)

解决方案:

修正/user/bin/php-config文件即可。在本次实验中,因为目标php是宝塔面板中的php72。所以,目标php-config文件路径是:

/www/server/php/72/bin/php-config

修正的方法也非常简单:

rm -rf /usr/bin/php-config
ln -s /www/server/php/72/bin/php-config /usr/bin
注意:这里使用alias别名,而不是ln -s的话,是不会生效的。

当然,对于您来说,这个php-config的路径,很有可能并不是上述路径。修正好php-config之后,就可以重新顺利编译phpx了。

原理解析

/usr/bin/目录中,存在着一系列php相关文件。这些文件是全局的,那么对于宝塔面板这种,同时存在多个php的情况来说,这些/usr/bin/php*代表的到底是哪个php,这就有值得商榷的。

phpx 编译错误:php.h: No such file or directory - usr-bin-php
phpx 编译错误:php.h: No such file or directory(图5-3)

phpxcmake -j 4过程中,需要使用全局的php-config来确定phplib目录位置。这个位置,实际上可以通过下面的命令获得:

php-config --include-dir

这个位置对于苏南大叔本次实验来说,如果非常明确的指明php72下面的php-config下的话。

/www/server/php/72/bin/php-config --include-dir

获得的头文件库的路径是:

/www/server/php/72/include/php

phpx 编译错误:php.h: No such file or directory - php-config-info
phpx 编译错误:php.h: No such file or directory(图5-4)

实际上在第一步cmake .的时候,就可以通过检测到的PHP_INCLUDE_DIR的值,来发现是否有问题。如果识别的路径明显错误,那么就证明/usr/bin/php-config文件是有问题的,需要对其修复处理。

phpx 编译错误:php.h: No such file or directory - cmake_prepare
phpx 编译错误:php.h: No such file or directory(图5-5)

相关链接

总结

修正了php-config的路径后,就可以愉快的继续编译phpx了。离着您使用cpp来编译php扩展的道路,就更加迈进了一步。加油,少年~

更多phpx的经验文字,请点击苏南大叔的phpx最佳实践:

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   php    swoole

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!