phpx 编译错误:php.h: No such file or directory
发布于 作者:苏南大叔 来源:程序如此灵动~在学习swoole
的过程中,您可能会碰到phpx
的概念。那么在phpx
的编译过程中,就很可能会碰到本文中的错误信息,提示无法找到php.h
文件。.h
文件是c
语言文件编译的时候的头文件。这个php.h
,看上去就应该是php
的共享库文件。那么没有找到php.h
文件,意思就是没有识别到php
的lib
的位置。这种类似的情况,以前在编译php
程序主体的时候,有碰到过。详见文末链接。
那么如何解决这个无法找到php.h
的问题呢?请看本篇文章描述。
本文测试环境:centos7
,宝塔@6.8.8
,php72
,swoole@4.2.12
,phpx@0.0.2
。
错误提示:
在phpx
的编译过程中的第二个步骤的时候,也就是make -j 4
这个步骤的时候,可能会看到如下信息:
fatal error: php.h: No such file or directory
解决方案:
修正/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
的cmake -j 4
过程中,需要使用全局的php-config
来确定php
的lib
目录位置。这个位置,实际上可以通过下面的命令获得:
php-config --include-dir
这个位置对于苏南大叔本次实验来说,如果非常明确的指明php72
下面的php-config
下的话。
/www/server/php/72/bin/php-config --include-dir
获得的头文件库的路径是:
/www/server/php/72/include/php
实际上在第一步cmake .
的时候,就可以通过检测到的PHP_INCLUDE_DIR
的值,来发现是否有问题。如果识别的路径明显错误,那么就证明/usr/bin/php-config
文件是有问题的,需要对其修复处理。
相关链接
总结
修正了php-config
的路径后,就可以愉快的继续编译phpx
了。离着您使用cpp
来编译php
扩展的道路,就向前迈进了一步。加油,少年~
更多phpx
的经验文字,请点击苏南大叔的phpx
最佳实践:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。