随着 Composer 的流行,我们在项目中也开始使用它来管理第三方库依赖。出于安全考虑,我们一般都会在 php.ini 配置中禁用一些对站点安全有隐患的函数,而 Composer 正常运行所依赖的 phpinfo, getcwd, proc_open 等函数正处于被禁之列,怎么办呢?好在 php 命令行工具提供了 -c 和 -d 两个运行参数,可以使我们不致于因为安全的原因而无法使用 Composer 。
我们来看一下这两个参数的具体用途:
php --help
Usage: php [options] -- [args...]
php [options] -a
-a Run as interactive shell
-c path|file Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
Continue reading…
为朋友写了个PHP版本的 socket 程序,在自己的机器环境(WIN2K3, IIS6, PHP4.4.6,ISAPI 模式)下测试一切 OK,到了实际环境却提示 Call to undefined function socket_create()
,初步判断应该 php_socket.dll 未加载的缘故,echo phpinfo 也没有 socket 相关信息。
确认在 php.ini 文件里已经将;extension=php_sockets.dll
这一行的分号去掉了,可 socket 扩展死活不加载。除了 PHP 版本有些差别(实际环境是4.4.9版本),其它设置都一样,正想将 PHP 降到 4.4.6 版本,却突然出现 Service Unavailable 提示,难不成要重装IIS?
不甘心,于是 google 解决方案。参照 Tmouse·方枪枪 的做法:
打开IIS管理器 - 网站 - 右键属性 - 服务 - 勾上”以IIS5.0隔离模式运行www服务”
IIS 的 Service Unavailable 故障消失,更为有意思的是 php_socket 扩展可以正常加载了 -_-! 要不是情况特殊,以后打死我也不用 IIS 跑 PHP 了。
adodb 实在太庞大了,况且也不需要那么多的功能,就自己写了一个 PHP 操作 SQL Server 的类。带有强烈的 discuz 风格。
// sample
$db = new dbstuff;
$db->connect($dbserver, $dbuser, $dbpwd, $dbname, $codepage);
Continue reading…