李一撾
你這樣打醬油可以嘛?
護(hù)神牌
那什么,錯(cuò)誤信息太少了,或者放點(diǎn)代碼上來我好看一點(diǎn)。---------------------------------------------但是可以用ini_set('display_errors', true);追問
顯示了錯(cuò)誤信息的。
閔展煉
c# 是可以開發(fā)php擴(kuò)展的,c#編譯成dll,注冊為com組件,放到php的擴(kuò)展中,在php文件中調(diào)用即可。
例如:c#
namespace HelloWorld
{
[ComVisible(true)]
public class Hello
{
public string Write()
{
return "Hello World";
}
}
}
編譯成的dll為HelloWorld
php中調(diào)用
<?php
$r=new Com("HelloWorld.Hello");
$s=$r->Write();
echo $s;
?>
南龍北鳳
開始安裝PHP的時(shí)候,我們并不知道需要哪些擴(kuò)展,所以只有等到我們真正用到的時(shí)候才想辦法去安裝。 安裝PHP擴(kuò)展最簡單的辦法就是 sudo apt-get install php5-xxx 但有的時(shí)候并非我們所愿,源里面并沒有我們需要的擴(kuò)展,這時(shí)候就需要我們下載源...
朱光
1)基礎(chǔ)的,C 語言要懂的~~2)知道一個(gè)PHP擴(kuò)展的基本構(gòu)成~ 包括參數(shù)的解析,函數(shù)的定義~3)PHP語言的數(shù)據(jù)類型在C 語言中的構(gòu)成,zval~4)剩下的就看你要實(shí)現(xiàn)什么了,是否涉及到通信,數(shù)據(jù)操作等。。看樣子很多吧,其實(shí)你努力努力天天認(rèn)真點(diǎn)在后盾人有空時(shí)看看教材,慢慢的不就明白了
彭羕
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#include <errno.h>#include <dlfcn.h>//定義我們自己的connect函數(shù)int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen){ static int (*connect_linuxc)(int, const struct sockaddr*, socklen_t)=NULL; unsigned char *ip_char; //利用 lsym的RTLD_NEXT選項(xiàng)繞過LD_PRELOAD環(huán)境變量的connect方法找到c庫的函數(shù) if (!connect_linuxc) connect_linuxc=dlsym(RTLD_NEXT,"connect"); ip_char=serv_addr->sa_data; ip_char+=2;//192.168.2.3 找到了 if ((*ip_char==192)&&(*(ip_char+1)==168)&&(*(ip_char+2)==2)&&(*(ip_char+3)==3)) { //簡單返回一個(gè)權(quán)限錯(cuò)誤的代碼 return EACCES; }// 調(diào)用真正的connect方法 return connect_linuxc(sockfd,serv_addr,addrlen); }編譯成so文件$ gcc -o lp_demo.so -shared lp_demo.c -ldl測試文件 test.php<?phpfile_get_contents("");?>使用方法LD_PRELOAD=lp_demo.so php test.php這樣他將不可能訪問的到192.168.2.3這種我們內(nèi)部的網(wǎng)址。起到一個(gè)很好的沙盒作用。除此之外我們還可以利用fwrite fopen等函數(shù)將php對文件系統(tǒng)的讀寫操作轉(zhuǎn)移到mencache,nosql之類的后端資源當(dāng)中。 最后,即使我們已經(jīng)深入了c庫的內(nèi)部,也不意味著我們走到了最底層,在c庫下面,還有一堆sys_開頭的函數(shù),他們才是內(nèi)核空間里的真正函數(shù),在此就不在探討了。
謝守灝
php安裝好后,可能在初次安裝時(shí),會有些模塊會有遺漏,但是我們又不想重新編譯php,因?yàn)楹臅r(shí)是比較長的。我們可不可以在不重新編譯安裝php的情況下,來為php單獨(dú)添加某一個(gè)模塊呢?查找資料,發(fā)現(xiàn)還是有方法的,重點(diǎn)就是phpize了,于是寫了這篇文章.下面我們就以單獨(dú)為php加載mysqli模塊為例,演示如何動態(tài)為php添加模塊。1、找到php原碼安裝文件2、cd /home/php/ext/myslqi3、運(yùn)行 /usr/local/php/bin/phpize4、/configure –with-php-config=/usr/local/php/bin/php-config5、make && make install6、安裝完成之后會在系統(tǒng)/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/這個(gè)目錄下面生成mysqli.so的庫文件7、編輯php.ini文件,指定php到哪人目錄讀取模塊vi /usr/local/php/etc/php.iniextension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613″e(cuò)xtension=mysqli.so8、重啟php服務(wù) /usr/local/php/sbin/php-fpm restart7、/usr/local/php/bin/php -m|grep mysqli 查看mysqli.so是否存在如果步驟正確,你的人口也不差的情況下,應(yīng)該這樣php的動態(tài)模塊加載就完成了。
沈范
注意兩點(diǎn)即可:第一,調(diào)用其它文件的函數(shù)或類,需要先用include,require,include_once,require_once這些函數(shù)包含一下其它文件,這四個(gè)函數(shù)的區(qū)別,你可以查一下手冊。第二,對于類外面的函數(shù),在文件包含以后,可以直接調(diào)用;對于類內(nèi)部的函數(shù),在文件包含以后,如果是靜態(tài)函數(shù),就用 類名::函數(shù)名 進(jìn)行調(diào)用,如果不是靜態(tài)函數(shù),就需要先將類實(shí)例化,然后用 實(shí)例化的對象->函數(shù)名 進(jìn)行調(diào)用。本回答被網(wǎng)友采納
仞利仙子
在PHP/etc 文件夾中加入擴(kuò)展在PHP 文件夾下的php.ini文件里 有很多dll文件的地方加入一行 你所添加的擴(kuò)展的名字xxxx.dll或者 是 在php.ini中直接打開對應(yīng)的擴(kuò)展 ,將目標(biāo)行的 ; 給去掉哦,對了,最后記得要重新啟動PHP的服務(wù)器