导航:首页 > 编程语言 > 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相关的资料

热点内容
java互联网公司 浏览:68
对弈下象棋的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