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%里面就可以了
如果不行就没办法了...我也只有这点能耐