目錄
php扩展,一个helloworld的实现
Segmentation fault” (core dumped)
首頁 後端開發 php教程 php扩展,一个helloworld的实现_PHP教程

php扩展,一个helloworld的实现_PHP教程

Jul 13, 2016 am 09:56 AM

php扩展,一个helloworld的实现



php -v
PHP 5.5.9-1ubuntu4.7 (cli) (built: Mar 16 2015 20:47:39)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

配置参考文章:http://blog.csdn.net/niujiaming0819/article/details/8543028
本文也采用参考文章中的步骤过程为本机实现过程

step 1. 下载php源码包,php官网下载即可,本次使用的是php5.6.8版本
step 2. 解压压缩包,进入解压后的包(mysoft$ cd php-5.6.8/) ,同过 ls命令查看源码包中的文件目录,进入ext文件夹(cd ext)

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195BV2-0.png

step 3.建立扩展开发框架 ./ext_skel --extname=helloworld

执行上面的命令建立扩张开发的框架,这是你会发现ext文件夹下面多了一个叫helloworld的文件夹,同时命令行也输出了一些文本,

会提示你生成扩展的大致步骤。

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195A4C-2.png

 


data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195BN6-4.png



step 4. 进入php源码的根目录, 编辑文件 vim ext/helloworld/config.m4

去掉这个文件中的几行注释大致会在第16-19行之间,具体版本也许不一样之后保存文件(:wq)

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195611A-6.png

 

step 5. 在php源码根目录执行命令 ./buildconf --force

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195643N-8.png

 

 

step 6. 在php源码的根目录编译php程序,注意命令为 ./configure --with-helloworld

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195B205-10.png

最后出现的error,没有处理

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195643E-12.png

step 7. 进入我们的扩展目录helloworld,执行命令 phpize(通过 sudo apt-get install php5-dev 安装 phpize),此时你的扩展目录会生成很多文件,可以用于后期编译。

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195C593-14.png

step 8.在helloworld目录编译我们的扩展 ./configure --with-php-config=/usr/bin/php-config(使用你自己环境的php-config) --enable-helloworld

你可以通过一条命令查找你的php-config文件的位置(find / -name php-config)如图:我的地址为/usr/bin/php-config

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195A060-16.png

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195634F-18.png

 

step 9 .进入扩展helloworld目录,编辑文件php_helloworld.h,在最后一行添加函数 PHP_FUNCTION(helloworldTest);

helloworldTest 可以改成你喜欢的名字,之后保存退出

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195CK7-20.png

 

step 10. 用vim 打开helloword.c,在helloworld.c中实现我们的函数,之后 将helloworldTest函数加入到helloworld_functions[]中,保存退出

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/0419562418-22.png

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195624c-24.png

 

 

step 11.执行make命令 make 编译扩展,我在运行的过程中还是比较顺利的。如果出现错误,请认真看前面步骤是否有错,我在第一遍做的时候也有错一般都是前面步骤有问题。

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195B452-26.png

 

step12.将编译生成的helloworld.so 文件复制到你本机的php扩展目录

扩展目录可以通过 php -r phpinfo(); | grep extension_dir 查看本机php的扩展路径

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195624O-28.png

step 13.配置php.ini 开启 helloworld.so 扩展

查看php.ini 的位置(php -r phpinfo(); | grep php.ini )

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195C025-30.png

vim 打开 php.ini 文件 sudo vim /etc/php5/cli/php.ini

在文件最后添加扩展 (extension=helloworld.so)

通过 php -r phpinfo(); | grep helloworld 测试

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195639D-32.png

step 14 .测试扩展(php -r echo helloworldTest();)

data-cke-saved-src=http://www.bkjia.com/uploads/allimg/150425/04195A5P-34.png

 

 

在这个过程中我曾按照原作者的步骤去尝试,结果会出现一个错误

Segmentation fault” (core dumped)

经过调试,时原作者在helloworld.c 文件中添加到helloworld_functions[] 时将 PHP_FE_END 换成了 {null,null,null} 而自己再编译的时候并没有出错却也给PHP_FE_END注释 了,修改之后,重新编译,复制就可以了。

 

 

 

 

 

 





www.bkjia.comtruehttp://www.bkjia.com/PHPjc/989127.htmlTechArticlephp扩展,一个helloworld的实现 php -v PHP 5.5.9-1ubuntu4.7 (cli) (built: Mar 16 2015 20:47:39) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
如何查看php用了哪些擴展 如何查看php用了哪些擴展 Aug 01, 2023 pm 04:13 PM

查看phpinfo()函數輸出、使用命令列工具和檢查PHP設定檔均可以查看php用了哪些擴充功能。 1.查看phpinfo()函數輸出,創建一個簡單的PHP腳本,將這個腳本保存為phpinfo.php,並將其上傳到您的網頁伺服器,在瀏覽器中存取此文件,使用瀏覽器的搜尋功能,在頁面中尋找關鍵字"extension"或"extension_loaded",以找到有關擴充功能的資訊即可。

如何使用php擴充PDO連接Oracle資料庫 如何使用php擴充PDO連接Oracle資料庫 Jul 29, 2023 pm 07:21 PM

如何使用PHP擴充PDO連接Oracle資料庫導語:PHP是一種非常流行的伺服器端程式語言,而Oracle是一款常用的關係型資料庫管理系統。本文將介紹如何使用PHP擴充PDO(PHPDataObjects)來連接Oracle資料庫。一、安裝PDO_OCI擴充要連接Oracle資料庫,首先需要安裝PDO_OCI擴充。以下是安裝PDO_OCI擴充的步驟:確保

如何使用PHP擴充SuiteCRM的報告產生功能 如何使用PHP擴充SuiteCRM的報告產生功能 Jul 19, 2023 am 10:27 AM

如何使用PHP擴充SuiteCRM的報告產生功能SuiteCRM是一款功能強大的開源CRM系統,它提供了豐富的功能來幫助企業管理客戶關係。其中一個重要的功能是報告生成,使用報告可以幫助企業更了解業務狀況,並做出正確的決策。本文將介紹如何使用PHP擴充SuiteCRM的報告產生功能,並提供相關的程式碼範例。在開始之前,需要確保已經安裝好了SuiteCRM,

PHP入門指南:PHP擴充安裝 PHP入門指南:PHP擴充安裝 May 20, 2023 am 08:49 AM

在使用PHP進行開發時,我們可能需要使用一些PHP擴充。這些擴充功能可以為我們提供更多的功能和工具,使我們的開發工作更有效率和便利。但在使用這些擴充功能之前,我們需要先進行安裝。本篇文章將為您介紹PHP擴充的安裝方法。一、什麼是PHP擴充? PHP擴充是指為PHP程式語言提供額外功能和服務的元件。這些組件可以透過PHP的擴充機制進行安裝和使用。 PHP擴充可以幫助我們處

php如何使用PHP的geoip擴充? php如何使用PHP的geoip擴充? Jun 01, 2023 am 09:13 AM

PHP是一種流行的伺服器端腳本語言,它可以處理網頁上的動態內容。 PHP的geoip擴充功能可以讓你在PHP中取得有關使用者位置的資訊。在本文中,我們將介紹如何使用PHP的geoip擴充。什麼是PHP的GeoIP擴充? PHP的geoip擴展是一個免費的、開源的擴展,它允許你獲取有關IP位址和位置資訊的資料。此擴充功能可以與GeoIP資料庫一起使用,這是一個由MaxMin

寶塔面板的PHP擴充和PHP版本管理 寶塔面板的PHP擴充和PHP版本管理 Jun 21, 2023 am 08:49 AM

宝塔面板是一款开源的服务器管理面板,在为网站运营者提供便捷的网站管理、数据库管理、SSL证书管理等服务的同时,还提供了强大的PHP扩展和PHP版本管理功能,让服务器管理变得更加简单和高效。一、PHP扩展PHP扩展是一种用来增强PHP功能的模块,通过安装PHP扩展可以实现更多的功能和服务,比如:加速器:加速器可以显著地提高PHP性能,通过缓存PHP脚本,减轻服

完全指南:如何使用php擴充SimpleXML讀取和處理XML數據 完全指南:如何使用php擴充SimpleXML讀取和處理XML數據 Jul 28, 2023 pm 02:46 PM

完整指南:如何使用PHP擴充SimpleXML讀取和處理XML資料簡介:在現代的Web開發中,處理和操作XML資料是一項非常常見的任務。 PHP作為一種強大的伺服器端腳本語言,提供了多種擴充功能和功能,用於處理和操作XML資料。其中,SimpleXML擴充是一種特別有用的工具,可以簡化XML資料的讀取和處理過程。本文將為您提供一個完整的指南,介紹如何使用PHP擴展

PHP擴充開發深度探索:揭開PHP擴充開發的幕後秘密 PHP擴充開發深度探索:揭開PHP擴充開發的幕後秘密 Feb 19, 2024 pm 11:40 PM

PHP擴充開發是創建自訂功能、擴展php核心功能並建立更強大的應用程式的藝術。它為PHP世界開闢了新的可能性,允許開發人員超越語言的基本限制。本文將帶您踏上PHP擴展開發的旅程,從基礎概念到進階技巧,為您提供全面的知識和實踐指南。 PHP擴充開發基礎在開始PHP擴充開發之前,您需要了解一些基礎概念。什麼是PHP擴充? PHP擴充是一種動態連結函式庫(DLL),它可以擴充PHP核心功能,提供新的資料型別、函式和類別。 PHP擴充的優點PHP擴充具有許多優點,包括:可擴充性、靈活性、效能最佳化和程式碼重複使用。 PHP

See all articles