phpcdll
⑴ C擴展php 是什麼意思,能舉個簡單的例子嗎
比如在win下的lamp環境吧,你想要php支持某個擴展不是需要把php.
ini文件
的那個注釋取消么,那個擴展是個文件類型為.dll的linux下為.soC語言能編譯成這兩種文件類型.或者說所有的擴展都是C編寫的.
⑵ 1.安裝php時候為什麼要把php目錄下的dll文件復制到C盤的System32,
目的是為了便於定址。因為System32目錄必然已被配置到環境變數中,而windows系統會根據環境變數的設置進行文件查找,這樣做可以保證dll文件被找到。
實際上並不推薦將dll文件復制到system32目錄,因為這會導致該文件夾下的文件難以有效的管理,通常只有dll文件被多個程序共享時才會如此操作,而php目錄下的文件已php5apache2_2.dll為代表的系列文件明顯是apache專用的。網上很多的配置教程之所以要求進行文件復制是為了省事而已。
已apache為例,為了使用php5,應該增加以下配置
LoadMole php5_mole "PHP安裝路徑/php5apache2_2.dll"
然後作者就要解釋PHP安裝路徑的含義,而如果作者告訴你復制該文件到system32下,那麼這行配置只要寫成
LoadMole php5_mole "php5apache2_4.dll"
就可以了,windows會根據環境變數的設置嘗試依次查找該文件。
樓主可以自行嘗試下載和安裝wamp套件,該套件的配置比較標准,可以作為學習對比使用,你會發現完全沒有必要文件。
⑶ 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 馬犇");
?>
瀏覽即可看到效果
⑷ php能夠調用C或C++寫的.dll文件嗎 - PHP進階討論
可以我寫過一個調用SAP BO的COM,要調用必須先安裝好COM組件的,在注冊表查出組件名字(如果你不清楚組件名字的話)我把我寫過的函數給你看看
/**
* 載入COM組件
*/
private function createCompanyObject() {
$company = false;
try {
$company = new COM("SapBobsCom.Company");//這樣就可以獲取COM組件了
} catch(Exception $e) {
$this->errorMsg = $e->getMessage();
}
return $company;
}
⑸ apache啟動時無法載入模塊c:/php/php_mysql.dll
再裝Apache啊! 要資料庫的話就用MYSQL資料庫
一.php的安裝與調試
由於php是一個zip文件(非install版),安裝較為簡單,解壓就行。把解壓的 php5.2.1-Win32重命名為 php5。並復制到C盤目錄下。即安裝路徑為 c:\php5
1 找到php目錄下的 php.ini-dist或 php.ini.recommended文件,重命名為 php.ini
並復制到系統盤的windows目錄下(以c:\windows為例).
2 再把php目錄下的php5ts.dll,libmysql.dll復制到目錄 c:\windows\system32下。
3 把php5\ext目錄下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件復制到c:\windows\system32下
如果沒有載入 php_gd2.dll php將不能處理圖像。沒有載入php_mysql.dll php將不支持mysql函數庫
php_mbstring.dll在後面使用phpmyadmin時支持寬字元。
4 打開c:\windows\php.ini文件(關聯到mysql)
設置擴展路徑
查找 extension_dir 有這么一行extension_dir = "./"
將此行改成
extension_dir = "C:\php5\ext"
其中C:\php5是你安裝php的路徑。路徑不正確將無法載入dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分號去掉)
查找 extension
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dl
把上面3項前面的分號去掉,這樣apache啟動時就可以載入這些dll了
當然前面我們也把這些dll復制到system32下了l
php5時差問題
<?php echo date("Y-m-d H:i:s");?>時間相差八小時
為什麼呢?PHP5系列版本新增了時區設置,默認為格林威治時間,與中國所在的東8區正好相差8個小時
查找date.timezone有這么一行
;date.timezone =
將;去掉,改成
date.timezone = PRC
二.apache的調試和整合
1.修改網站根目錄
查找 DocumentRoot有這么一行
DocumentRoot"C:/Program Files/Apache Group/Apache2/htdocs"
這就是你網站的根目錄,你可以修改,也可以用默認的.如果改,還要修改下面這項,否則可能會出現 403 錯誤
查找 This should be changed to whatever you set DocumentRoot to
在它下面兩行有
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
把上面兩項的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目錄
2.讓apache支持*.php(網頁)
查找 DirectoryIndex index.html index.html.var
修改成
DirectoryIndex index.html index.html.var index.php
這樣index.php 可以充當默認頁面了
3.Apache中模塊化安裝php
查找 # LoadMole foo_mole moles/mod_foo.so
在此行後加入一行
LoadMole php5_mole C:/php5/php5apache2.dll //注意:其中C:/php5/php5apache2.dll是你安裝php的相應路徑.不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只適用於apache 版本1的.PHP5壓縮包里的php5apache2.dll只適用於apache2.0.*版本,如果是2.2.*以上版本,就可能會出現"Cannot load C:/php/php5apache2.dll into server: The specified mole could not be found."或者:"The requested operation has failed"
4.查找 AddType application/x-gzip .gz .tgz
在此行後加入一行
AddType application/x-httpd-php .php (記住:前邊有一個空格哦!!!)
這樣apache就可以解釋php文件了
5.測試
在網站根目錄下創建一個 phpinfo.php 文件
<?php
phpinfo();
?>
在瀏覽器打開
5.測試php和mysql資料庫的關聯
在網站根目錄下創建一個test.php 文件
<?php
$link=mysql_connect("localhost","root","12345"); //12345改成你的mysql密碼
if(!$link) echo "失敗!";
else echo "成功!";
mysql_close();
?>
在瀏覽器打開
如果輸出成功,則說明大功告成了
⑹ php無法找到指定的模塊,php_mysql.dll,c:\php究竟是在哪裡指定的如何修改該指定地址
首先找到 php_pdo_mysql.dll在哪個目錄
然後 php.ini 中設置 :extension_dir=目錄如c:/php/ext/
⑺ PHP調用C寫的DLL如何實現回調函數
1、打開騰訊電腦管家找到工具箱;
2、打開工具箱找到「 電腦診所」
3、 打開電腦診所後在右上角的搜索內輸入dlL找到需要修復的文件後點擊一鍵修復或者可以點擊詳情查看原因並點擊立即修復。
⑻ 為什麼不能運行php,缺少oci.dll文件是什麼回事
dll文件一般被存放在C:\Windows\System目錄下。電腦系統文件因經常會受到病毒的侵擾,導致系統文件、dll文件等丟失、損壞,一些包括游戲在內的應用程序無法啟動。
解決方法有:
1、用Windows系統盤功能進行文件修復;
2、若在此之前有一鍵備份過,可以重新還原;
3、從網上下載系統文件然後覆蓋到原文件夾里;
4、由於從網上下載系統文件,可能會因為系統文件版本與操作系統不相符造成系統文件不兼容的情況,修復系統文件最好使用專業的工具進行一鍵修復。
5、可以用騰訊電腦管家修復下。打開電腦管家——電腦診所——軟體問題——缺少dll文件。
⑼ 安裝PHP後無法載入DLL擴展出現問題
鄙人愚笨,看到你這樣的問題確實有點惱火,不過曾經我也遇到過類似的問題.
Windows XP的IIS是5.1的,應用程序擴展做的不是很好...
建議你重新安裝PHP,並且重新指定path
庫文件不是全部都要放到%systemroot%下面的
把php.ini以及isapi的擴展放到%systemroot%裡面就可以了
如果不行就沒辦法了...我也只有這點能耐