Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP C扩展初探

PHP C扩展初探

WBOY
WBOYasal
2016-07-29 08:55:381648semak imbas

说明

环境:

<code> ubuntu14.4 
 php5.5.9 通过apt-get 安装
</code>

因为不同于编译安装的php,需要重新下载php源码进行扩展。

<code>$ <span>sudo</span> apt-get <span>source</span> php5 </code>

保存目录可自定义
打开源码文件进入到ext中,这里是存放扩展的地方,我们可以看到有 许多官方的扩展
这里可以科普一下php源码的主要目录以及功能
./main包含PHP主要宏定义
./pear 包含PEAR核心文件
./sapi 包含不同服务器抽象层代码
./Zend包含引擎的所有文件
我们要用到php-dev包,编译安装下会内置
$sudo apt-get install php5-dev
$phpize-v
验证安装是否成功

正式开始扩展

使用ext_skel 这个文件就在ext目录下
$./ext_skel --extname=newext
很多教程上都是这一句命令,但我在使用过程中发现了会在后续过程中无法找到newext.c文件
查找刚才的操作,发现会报cannot open /skeleton.c: No such file 原来是找不到skeleton.c 我们可以通过查看ext_skel发现

PHP  C扩展初探
所以需要指定skel的path
删除原先newext目录,重新走一遍
$ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton
成功后返回
PHP  C扩展初探

根据提示我们需要更改 /newext2/config.m4 的注释
PHP  C扩展初探

<code><span>$cd</span> newext2
<span>$phpize</span>
$<span>.</span>/configure <span>--</span><span>with</span><span>-php</span><span>-config</span><span>=</span>/usr/bin/php<span>-config</span><span>$make</span></code>

在这里需要注意,如果出现make无规则错误 需要查看php-config路径是否正确
若编译成功会如下所示
PHP  C扩展初探

<code><span>$make</span> test 
<span>$make</span> install</code>

接着我们就修改php.ini文件
增加extension = newext2.so
注意cli模式和cgi模式下的php.ini文件是不一样的,我在刚开始实验的时候发现cli模式下使用

<code><span>$usr</span>/bin/php <span>-m</span></code>

并没有发现newext2的扩展
后来在cgi下输出phpinfo却能看到
后来 在cli下 输出phpinfo 找到php.ini的路径作出修改最后成功
控制台下phpinfo输出过大可以使用下面方法

<code><span>$ </span>php phpinfo.php | less
</code>

找到路径后进行更改
PHP  C扩展初探
修改后别忘记restart apache

网上有很多相关的教程,我参考了《PHP和新技术与最佳实践》第七章和自己在实际操作遇到的问题进行整理总结,特别针对非编译安装PHP的情况,主要是注意配置文件的路径问题。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了PHP C扩展初探,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn