PHP 尽管提供了大量有用的函数,但是在特殊情况下还可能需要进行扩展编程,比如大量的 PECL(PHP Extension Community Library)就是以扩展的形式提供的(动态链接库dll文件),它们比 PEAR 的运行效率要高很多。
PHP 扩展是用 C 或 C++ 编写的,需要编译成动态连接库 dll 文件后在 PHP 环境下注册后才能使用。
编写 PHP 扩展的软件要求:
VC++6.0 或 VC++.NET 环境。
PHP 的源代码,需要编译。
如果不愿意编译 PHP 的源代码,可以再下载 PHP 的已经编译成功的二进制代码(就是我们部署 PHP 运行环境的那些文件包)。注意分别下载的源文件包和已编译包,它们的版本必须一致。
WSF/PHP调用带有WS-Security支持的Web Service时的注意事项
目前在PHP中调用带有WS-Security支持的Web Service解决方案还是比较少的,WSF/PHP是一个不错的选择,官方首页为http://wso2.org/projects/wsf/php,下面就介绍下在运用WSF/PHP的时候需要注意的一些地方;
1、WSF/PHP【WSO2 Web Services Framework for PHP】 是WSO2.ORG提供的专门针对PHP调用Web Service的一个优秀框架,使用非常简单;但是WSO2不仅仅提供针对PHP的ws框架,而且还对其他很多中语言提供开发框架,比如基于Spring、Perl、Ruby……,除此之外还提供很多其他框架和培训服务,具体可查询wso2.org和wso2.com;
2、WSF/PHP模块的安装需要很多其他的支持包,在windows下面体现为一些dll文件,主要包括Libxml2、iconv、Openssl、zlib,而不仅仅是Libxml2【GNOME XML Library】;安装过程中需要将这些依赖dll全部都集中到wsf_c/lib/目录中;这些依赖包可以到http://www.zlatkovic.com/pub/libxml/下载,下载完成之后对各压缩包解压,dll文件一般位于/bin/目录中;
3、WSF所依赖的这些dll文件一定需要copy到/windows/system32/中才行,否则加载模块不成功;这点和官方文档中说的直接将wsf_c/lib/加入到path中即可是不一致的;当然这点可能有其他方式可以解决,因为我不精通PHP,但是和一些同事沟通过,但没结果;
4、验证是否正常加载了WSF模块,只用php -m命令查看列表是不够的,即时WSF模块没有加载成功,但是php.ini中设置了WSF模块,那php -m的列表中也会包括WSF;最保险的做法是查看服务器日志比如Apache;
5、在申明WSSecurityToken实例的时候,参数receiverCertificate是用来加密Soap消息的,而不是用来验证服务端返回的签名信息的,所以若只是需要签名,那该参数无需设置;WSF/PHP目前还没有提供验证服务端返回的签名信息功能的;
6、WSF/PHP调用WS时默认使用SOAP 1.2协议,这可能会对某些服务端ws调用时出错,若需要设置使用SOAP版本,则可以在申请WSClient实例时设置参数"useSOAP" => "1.1"实现;
win2003系统下IIS6+php5+Zend+MySql+phpMyAdmin的安装与配置
好久没有装过了,这次安装又发现了些问题,gg,baidu搜了一大圈,有的解决方法,有的不可以,把我的配置方法写一遍,留备用。
目标:win2003下配置iis+php+zend+mysql+phpmyadmin
服务器不允许执行exe,但php程序需要用到exe,有没有办法?
服务器不允许执行exe,但php程序需要用到exe,有没有办法?
是这样的
我一个视频转换项目需要用到ffmpeg
在linux下编译几经失败(linux不熟悉,这两天才看),只好在windows下面实现
本机是通过exec();执行ffmpeg的,然而服务器不允许执行可执行文件?
有没有什么办法?
通过计划任务好像可以,但不会设置
.exe文件在LINUX下运行不了, 不过可以试试用wine, 但我想你也动不了服务器.
如果服务器要限制你运行可执行程序的话, 是没有办法运行的.
你可以联系一下管理员看看能不能运行.
通过计划任务 bat调用php.exe执行php文件
关于数组合并,php
array_merge();
合并两个数组,如果数组的键名是字符,而且两个数组的键名是相同的字符,
史上最简! IIS 下安装 PHP
我之前参考了网上许多的iis下安装php的文章,都是拷php.ini和一堆的.dll,一个人有一个人的说法,乱七八糟,许多安装教程编写者自己都不知道拷这些东西,改这些配置究竟是干啥用的。我经过了一个上午的痛苦折磨和试验终于搞清楚了这里面的道道,现告诉大家一个带解释的安装教程:
在javascript中使用php风格的$globals
在javascript中使用php风格的$globals
JavaScript有隐含的全局变量。当你不使用var来定义a = 1,而直接定义a=1时,这个变量a将成为一个全局变量。有的认为这是一个错误,应该避免全局变量,因为它们往往会在意想不到的地方出错,尤其是在项目参与人员很多的情况下。
在PHP中加密
PHP提供了使用其crypt()函数完成单向加密功能的可能性。
string crypt (string input_string [, string salt])
其中的input_string参数是需要加密的字符串,第二个可选的salt是一
个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能
性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果你的系统使用的是
MD5,它会使用一个12个字符的干扰串。顺便说一下,可以通过执行下面的命
令发现系统将要使用的干扰串的长度:
print "My system salt size is: ". CRYPT_SALT_LENGTH;
系统也可能支持其他的加密算法。crypt()支持四种算法,下面是它支持
的算法和相应的salt参
数的长度:
算法 Salt长度
CRYPT_STD_DES 2-character (Default)
CRYPT_EXT_DES 9-character
CRYPT_MD5 12-character beginning with $1$
CRYPT_BLOWFISH 16-character beginning with $2$
用crypt()实现用户身份验证
作为crypt()函数的一个例子,考虑这样一种情况,你希望创建一段PHP
脚本程序限制对一个目录的访问,只允许能够提供正确的用户名和口令的用
户访问这一目录。我将把资料存储在我喜欢的数据库MySQL的一个表中。下面
我们以创建这个被称作members的表开始我们的例子:
mysql>CREATE TABLE members (
->username CHAR(14) NOT NULL,
->password CHAR(32) NOT NULL,
->PRIMARY KEY(username)
->);
然后,我们假定下面的数据已经存储在该表中:
用户名 密码
clark keloD1C377lKE
bruce ba1T7vnz9Awgk
peter paLUvRWsRLZ4U
这些加密的口令对应的明码分别是kent、banner和parker。注意一下每
个口令的前二个字母,这是因为我使用了下面的代码,根据口令的前二个字
母创建干扰串的:
$enteredPassword.
$salt = substr($enteredPassword, 0, 2);
$userPswd = crypt($enteredPassword, $salt);
// $userPswd然后就和用户名一起存储在MySQL中
我将使用Apache的口令-应答认证配置提示用户输入用户名和口令,一个
鲜为人知的有关PHP的信息是,它可以把Apache的口令-应答系统输入的用户
名和口令识别为$PHP_AUTH_USER和$PHP_AUTH_PW,我将在身份验证脚本中用
到这二个变量。
Windows 下的 PHP 扩展编程
PHP 尽管提供了大量有用的函数,但是在特殊情况下还可能需要进行扩展编程,比如大量的 PECL(PHP Extension Community Library)就是以扩展的形式提供的(动态链接库dll文件),它们比 PEAR 的运行效率要高很多。
PHP 扩展是用 C 或 C++ 编写的,需要编译成动态连接库 dll 文件后在 PHP 环境下注册后才能使用。
编写 PHP 扩展的软件要求:
VC++6.0 或 VC++.NET 环境。
PHP 的源代码,需要编译。
如果不愿意编译 PHP 的源代码,可以再下载 PHP 的已经编译成功的二进制代码(就是我们部署 PHP 运行环境的那些文件包)。注意分别下载的源文件包和已编译包,它们的版本必须一致。
得到PHP一个字符串的最后一个字符
<?php
得到PHP中最后一个字符
$str = " JhlIsHero ";
$var = trim($str);
$len = strlen($var)-1;
echo $var{$len};
?>
得到PHP一个字符串的最后一个字符
是不是PHP也和C一样,用一组连续地址来存储字符串呢......
PHP 文件函数
From: http://hi.baidu.com/kakuma/blog/item/940e911ea4fd9e1c413417d2.html
1、int filesize(string filename),获取文件的大小。对于2~4GB之间的文件,可以使用sprintf("%u",filesize($file))来处理
PHP:我坚决站在面向对象一边
PHP 语言从诞生起,就具有了很好的面向过程编程的特性。只是在其进化过程中才逐渐加强了面向对象的特性,直到 PHP5.0,也才接近完善。一般来说,PHP 的初学者和从 ASP 转向 PHP 开发的程序员比较偏向于面向过程编程,因为教科书和大量的参考书就是这样教的。