編寫php擴展
Ⅰ php的擴展模塊怎麼添加
在PHP/etc 文件夾中加入擴展
在PHP 文件夾下的php.ini文件里 有很多dll文件的地方加入一行 你所添加的擴展的名字xxxx.dll
或者 是 在php.ini中直接打開對應的擴展 ,將目標行的 ; 給去掉
哦,對了,最後記得要重新啟動PHP的伺服器
我個人理解是: 官方說 windows下的apache 要用VC6 我想應該使用了動態編譯(減少php.dll的大小)用VC寫的程序都應該知道,有個動態跟靜態連接那麼應該是apache2.dll這個文件 肯能需要VC6的一些lib庫支持??畢竟VC6是經典的C++編譯連接器當然,你如果編譯或者使用C++或者使用delphi等語言為PHP增加擴展功能肯定不限制你用什麼編譯器 因為如果你用VS2010這些編譯的話 只要設置成靜態的 還有取消微軟的託管完全可以兼容的? ?當然,如果用delphi編寫 肯能需要一些回調聲明??以為C++跟delphi不是同個聲明數據調用完後 進行內存數據銷毀的話肯能有區別以上完全個人理解 認為不當的 就當道聽途說 不用太當真
Ⅲ 如何看待用zephir來寫php擴展的呢
$ php -v
PHP 5.6.5 (cli) (built: Jan 24 2015 20:04:31)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Ⅳ 用php語言編寫網站程序,擴展性如何
你可以這樣,
1、要求他們使用oop思想來做,這樣,後期你們再二次開發的時候,可以方便的修改、刪除、增加功能。
2、要求他們開發完成後,交付完成源碼以及提供完整的開發文檔,包括每個類的屬性、方法等。這樣,你以後在去維護的話,對照開發文檔,效率就非常高了。
3、可能的話,要求他們用smarty來做,這樣程序與html分離,有利於後期的維護。
4、源碼當然要提供給你們了,而且要附帶完成的開發文檔。這些是最基本的。
Ⅳ php-cpp 開發的擴展如何發布
詳情如下:
PHP-CPP是一個用於開發PHP擴展的C++庫。PHP-CPP提供了一系列完善的文檔、易於使用和擴展的類,讓你可以相對快速的創建PHP的原生擴展。
用C++編寫的演算法看起來幾乎與用PHP編寫的演算法相同。如果你知道如何用PHP編程,你可以很容易地學習如何在C++中做同樣的事情。實際上,PHP和大多數PHP函數名的語法都直接來自C和C++語法。
Ⅵ 如何寫php擴展
PHP取得成功的一個主要原因之一是她擁有大量的可用擴展。web開發者無論有何種需求,這種需求最有可能在PHP發行包里找到。PHP發行包包括支持各種資料庫,圖形文件格式,壓縮,XML技術擴展在內的許多擴展。
擴展API的引入使PHP3取得了巨大的進展,擴展API機制使PHP開發社區很容易的開發出幾十種擴展。現在,兩個版本過去了,API仍然和PHP3時的非常相似。擴展主要的思想是:盡可能的從擴展編寫者那裡隱藏PHP的內部機制和腳本引擎本身,僅僅需要開發者熟悉API。
有兩個理由需要自己編寫PHP擴展。第一個理由是:PHP需要支持一項她還未支持的技術。這通常包括包裹一些現成的C函數庫,以便提供PHP介面。例如,如果一個叫FooBase的資料庫已推出市場,你需要建立一個PHP擴展幫助你從PHP里調用FooBase的C函數庫。這個工作可能僅由一個人完成,然後被整個PHP社區共享(如果你願意的話)。第二個不是很普遍的理由是:你需要從性能或功能的原因考慮來編寫一些商業邏輯。
如果以上的兩個理由都和你沒什麼關系,同時你感覺自己沒有冒險精神,那麼你可以跳過本章。
本章教你如何編寫相對簡單的PHP擴展,使用一部分擴展API函數。對於大多數打算開發自定義PHP擴展開發者而言,它含概了足夠的資料。學習一門編程課程的最好方法之一就是動手做一些極其簡單的例子,這些例子正是本章的線索。一旦你明白了基礎的東西,你就可以在互聯網上通過閱讀文擋、原代碼或參加郵件列表新聞組討論來豐富自己。因此,本章集中在讓你如何開始的話題。在UNIX下一個叫ext_skel的腳本被用於建立擴展的骨架,骨架信息從一個描述擴展介面的定義文件中取得。因此你需要利用UNIX來建立一個骨架。Windows開發者可以使用Windows ext_skel_win32.php代替ext_skel。
然而,本章關於用你開發的擴展編譯PHP的指導僅涉及UNIX編譯系統。本章中所有的對API的解釋與UNIX和Windows下開發的擴展都有聯系。
Ⅶ 如何寫一個PHP擴展
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
一、首先下載PHP源碼包,假設源碼包目錄為:/software/php-5.2.13
#> cd /software/php-5.2.13/ext
二、假設我們要開發一個名為caleng_mole的擴展,該擴展包含兩個函數:a--處理兩個整型相加和b-處理字元串重復輸出;
1、首先編寫一個函數定義文件,該文件編寫函數原型後綴為def,假設為:caleng_mole.def
int a(int x, int y)
string b(string str, int n)
2、通過擴展骨架生成器,將在ext目錄下自動建立擴展目錄caleng_mole
Ⅷ PHP7.0怎麼通過打開擴展功能和mysql相連
第一步:進入php源碼中的"ext/mysql"目錄下
第二步:在當前目錄下運行phpize命令:/usr/local/php524/bin/phpize
phpize的規則:去哪個目錄下運行phpize文件,那麼就會在該目錄下生成一個configure文件。
第三步:運行剛才生成的configure文件
命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/
這里最關鍵的是通過--with-mysql參數告訴mysql客戶端的位置。這樣才能生成mysql.so。
實驗的時候,沒有加這個參數,結果錯誤:
./configure --with-php-config=/usr/local/php524/bin/php-config
第四步:編譯生成.so文件
第五步:配置php引擎載入該擴展。
補充一下:就是去php.ini文件中修改一下配置,載入mysql.so這個擴展(這個擴展文件要放到php指定的擴展目錄下面去)
第六步:測試php引擎是否成功載入該擴展編寫文件phpinfo.php,內容是:<?phpehco phpinfo();?>
運行後,可以看到有如下信息顯示:mysqlMySQLSupport enabledActive PersistentLinks 0
Active Links 0
Client API version 5.1.55
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
通過這樣的方式可以確認,php引擎已經成功載入了mysql.so擴展。
第七步:已經生成的mysql.so。編寫php代碼測試是否能連接mysql。
Ⅸ php,可以在腳本里開啟php的擴展嗎
一部分是可以的,使用dl函數,下面是動態載入sql lite的例子代碼:
<?php
// Example loading an extension based on OS
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// Or, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
但是,不支持CGI模式,以及多線程的WEB伺服器。
Ⅹ 我想給php寫擴展,要做哪些准備啊
windows操作系統下的話,就是編寫.dll文件。用c/c++編輯器,比如dev-cpp、visual c++ 6.0等。當然是c/c++語言。
linux不知道了。
通常不需要自己做擴展的,請慎重。