導航:首頁 > 編程語言 > extensionloadedphp

extensionloadedphp

發布時間:2023-07-17 17:49:47

1. php調用dll文件裡面的函數

1、首先從www.php.net網站上下載php源碼,此處以php-5.2.17版本為例,下載後解壓至E:盤根目錄下(目錄可以自己隨意定)。
2、下載安裝VC++ 6.0,因為PHP源碼是利用6.0版本寫的,所以使用這個版本編譯不會出現意外,別的版本未測試。
3、把VC++ 6.0安裝目錄中的 Microsoft Visual Studio\Common\MSDev98\Bin 絕對路徑添加到系統環境變數中。
4、進入E:\php-5.2.17\ext目錄,復制skeleton文件夾,並重命名為要開發擴展的名字,本例為「myfun」。
5、重命名skeleton.c為myfun.c,skeleton.dsp為myfun.dsp
6、編輯myfun目錄中的php_skeleton.h、myfun.c、myfun.dsp這三個文件,替換內容中所有extname為myfun,EXTNAME為MYFUN。(一定要嚴格區分大小寫)
下面就進入到編碼階段:
7、打開php_skeleton.h文件(頭文件),找到PHP_FUNCTION(confirm_myfun_compiled);,在 PHP_FUNCTION(confirm_myfun_compiled);,下面編寫PHP_FUNCTION(mb_MessageBox);,聲 明一個mb_MessageBox函數,此函數的作用僅是輸出js彈出一個alert消息框,用於測試。
8、下面定義函數入口,打開myfun.c文件,找到PHP_FE(confirm_myfun_compiled,NULL) ;,在下面編寫 PHP_FE(mb_MessageBox,NULL),此處注意一下,PHP_FE是定義的一個宏,所以後面不用加引號。
9、在myfun.c最後面編寫函數的實體部分:

PHP_FUNCTION(mb_MessageBox)
{
char *arg = NULL;
int arg_len, len;
char *strg;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
}

len = spprintf(&strg, 0, "<script>alert('%s')</script>",arg); //此處正是輸入的js代碼
RETURN_STRINGL(strg, len, 0);
}

到這代碼書寫就完成了,下面開始編譯:
10、開始->運行,輸入CMD,打開命令行窗口。
11、進入myfun的目錄,輸入 msdev myfun.dsp /MAKE "myfun - Win32 Release_TS",回車編譯。
12、如果沒有錯誤,在E:\php-5.2.17下會生成一個Release_TS文件夾,在裡面就可以找到php_myfun.dll文件。
至此擴展dll開發完成,下面在php中進行測試:
13、把php_myfun.dll復制到原php目錄中的ext文件夾內。
14、打開php.ini文件,添加當前dll的擴展 extension=php_myfun.dll
15、重啟apache,在網站目錄下新建一文件,輸入以下內容:
<?php
echo mb_MessageBox("測試PHP擴展DLL by 馬犇");
?>
瀏覽即可看到效果

2. php頁面使用extension_loaded 載入 php.ini中的ffmpeg 提示失敗 php ffmpeg_movie 不能被實例化

請確認你的php是否 安裝了ffmpeg擴展,如果phpinfo()發現有如下項,說明配置成功!

3. php中關於socket的系列函數總結

本文列舉了所有關於PHP語言中使用socket相關服務的一些函數。注意使用如下函數之前,你需要確保你的socket已打開,如果你沒有打開,請編輯你的php.ini文件,去掉下面這行前面的注釋(分號):

代碼如下:
extension=php_sockets.dll
如果你無法去掉注釋,那麼請使用下面的代碼來載入擴展庫:
代碼如下:

if(!extension_loaded('sockets')){
if(strtoupper(substr(PHP_OS,3))=="WIN"){
dl('php_sockets.dll');
}else{
dl('sockets.so');
}
}
如果你不知道你的socket是否打開,那麼你可以使用phpinfo()函數來確定socket是否打開。你通過查看phpinfo信息了解socket是否打開。
php
socket
相關函數如下:

代碼如下:
socket_accept()
接受一個Socket連接
socket_bind()
把socket綁定在一個IP地址和埠上
socket_clear_error()
清除socket的錯誤或者最後的錯誤代碼
socket_close()
關閉一個socket資源
socket_connect()
開始一個socket連接
socket_create_listen()
在指定埠打開一個socket監聽
socket_create_pair()
產生一對沒有區別的socket到一個數組里
socket_create()
產生一個socket,相當於產生一個socket的數據結構
socket_get_option()
獲取socket選項
socket_getpeername()
獲取遠程類似主機的ip地址
socket_getsockname()
獲取本地socket的ip地址
socket_iovec_add()
添加一個新的向量到一個分散/聚合的數組
socket_iovec_alloc()
這個函數創建一個能夠發送接收讀寫的iovec數據結構
socket_iovec_delete()
刪除一個已經分配的iovec
socket_iovec_fetch()
返回指定的iovec資源的數據
socket_iovec_free()
釋放一個iovec資源
socket_iovec_set()
設置iovec的數據新值
socket_last_error()
獲取當前socket的最後錯誤代碼
socket_listen()
監聽由指定socket的所有連接
socket_read()
讀取指定長度的數據
socket_readv()
讀取從分散/聚合數組過來的數據
socket_recv()
從socket里結束數據到緩存
socket_recvfrom()
接受數據從指定的socket,如果沒有指定則默認當前socket
socket_recvmsg()
從iovec里接受消息
socket_select()
多路選擇
socket_send()
這個函數發送數據到已連接的socket
socket_sendmsg()
發送消息到socket
socket_sendto()
發送消息到指定地址的socket
socket_set_block()
在socket里設置為塊模式
socket_set_nonblock()
socket里設置為非塊模式
socket_set_option()
設置socket選項
socket_shutdown()
這個函數允許你關閉讀、寫、或者指定的socket
socket_strerror()
返回指定錯誤號的詳細錯誤
socket_write()
寫數據到socket緩存
socket_writev()
寫數據到分散/聚合數組

4. PHP可否調用動態鏈接庫

當php.ini中的enable_dl選項為on時,可以使用下面這個函數來載入dll文件:
int dl ( string library ),但是當系統處於安全模式時,即使enable_dl為on,也無法使用.

<?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);
}
?>

這屬於動態載入dll文件,還有一種方法就是,將你的dll文件放到php的ext目錄下,然後在你的php.ini文件裡面找到一大堆:extension=php_xxxx.dll那裡,找個空行,按照這個寫法寫上去,注意前面不要有";"號.重啟apache後,就可以調用裡面的東西了.

5. PHP載入IMAP模塊問題

extension_loaded("imap");
用get_extension_funcs("imap"); 函數進行測試,若返回boolean值為空,說明php_imap.dll文件沒有載入進去,

6. PHP如何向JAVA介面webservice發送xml

function httpPostXml($url='',$xmlData=''){
$server = $url;
//首先檢測是否支持curl
if (!extension_loaded("curl")) {
trigger_error("對不起,請開啟curl功能模塊!", E_USER_ERROR);
return null;
}
//構造xml
$xmldata= $xmlData;
//初始一個curl會話
$curl = curl_init();
//設置url
curl_setopt($curl, CURLOPT_URL,$server);
//設置發送方式:post
curl_setopt($curl, CURLOPT_POST, true);
//設置發送數據
curl_setopt($curl, CURLOPT_POSTFIELDS, $xmldata);
//不輸出瀏覽器,返回service返回值
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//抓取URL並把它傳遞給瀏覽器
$return = curl_exec($curl);
//關閉cURL資源,並且釋放系統資源
if(curl_errno($curl)){
echo curl_error($curl);
}
var_mp($return);
$xml = simplexml_load_string($return);
$returnData = json_decode(json_encode($xml),TRUE);

return $returnData;
}

閱讀全文

與extensionloadedphp相關的資料

熱點內容
對弈下象棋的app哪裡好 瀏覽:705
有什麼食譜app推薦 瀏覽:469
python實現動態口令 瀏覽:823
我的世界電腦伺服器地址怎麼添加 瀏覽:850
傳奇地圖怎麼加密到pak 瀏覽:977
linux刪除mysql用戶 瀏覽:755
圖案設計pdf 瀏覽:584
pdf編輯器在線 瀏覽:471
華為雲雲耀伺服器如何關機 瀏覽:994
數字加密的歷史 瀏覽:613
宏傑文件夾打不開 瀏覽:819
施工日記app哪個好 瀏覽:566
什麼是壓縮機的排氣量 瀏覽:538
在哪個app可以預約一科考試 瀏覽:634
易語言vmp加殼源碼 瀏覽:513
閱讀前端框架源碼 瀏覽:14
我的世界命令方塊傳送指令 瀏覽:545
不能用start命令打開xp 瀏覽:925
text命令 瀏覽:30
為什麼appstore經常下架游戲 瀏覽:91