Author Archives: James Tang

About James Tang

Web Developer, focusing on large-scale web application architecture and development.

phpmemecahed扩展编译的问题

PHP有两个memcached的扩展,其中一个较新的扩展也叫做memcached,跟memcached服务程序同名,所以有些混淆。 今天下载最新的扩展memcached-2.0.0b2.tgz, 编译的时候出现错误,问题是php_memcached.c中MEMCACHED_BEHAVIOR_TCP_KEEPALIVE没有定义。经google发现是MEMCACHED_BEHAVIOR_TCP_KEEPALIVE应该是在libmemcached中定义的,但在libmemcached的头文件中并也没有找到该常量。 最后发现原来是系统安装的libmemcached版本太老了,该版本是通过yum安装的。因此只有下载新的libmemcached,我下载的是 libmemcached-0.50,而不是最新的0.51,因为最新版有一个bug而无法编译完成。 至于php-memcached和memcache差别,参考memcache v.s. memcached

Posted in PHP | Tagged , , | Leave a comment

Notepad++实用插件分享

不是迫不得已,一般不用重量级IDE, 像Eclipse/ZendStudio, 在Linux用vim, Windows下就非Notepad++莫属了。 Notepad++是一个优秀的开源编辑器,最大特性就是插件丰富,这里分享一下我常用的实用插件,其中一些是Npp预装的。这些插件主要是开发相关的,所以如果想需要其它插件,可以浏览一下http://sourceforge.net/projects/npp-plugins/files/。 Explorer Explorer是文件浏览插件,可以快速的定位当前正在编辑的文件的位置,支持在搜索目录下文件的内容(Find in files)。收藏夹功能可以保存经常使用的目录或文件。 Compare Compare, 文件对比插件,可以进行简单快速的对比,不过进行复杂点的对比,我一般用WinMerge。 DBGp DBGp客户端插件,一般与xDebug一起用来远程调试PHP程序。 TagsView TagsView,文档的Class, 属性, 方法列表。比另一个叫做FunctionList的插件更好用。 NppFtp NppFTP, FTP客户端,不用多说。 RegEx Helper RegEx Helper,在文档的中匹配正则表达式,可以用来测试正则表达式。 JSON Viewer JSON Viewer,显示文档中选定JSON的结构。 NppAutoIndent NppAutoIndent, 自动缩进。

Posted in Essay | Tagged , | Leave a comment

PHP以CLI运行时require的有趣问题

假设当前工作目录是/home/james/, 子目录与文件的结构如下: bin/php/run.php的代码如下: require_once ‘pub.php’; echo pub_info() . “\n”; pub.php的代码如下: function pub_info() { return ‘Public function v 1′; } bin/php/pub.php的代码如下: function pub_info() { return ‘Public function v 2′; } 两个pub.php都定义了同一个函数,现在运行: php bin/php/run.php 输入是将是: Public function v 1,说明require_once加载的是最外面的pub.php。 如果将最外面的pub.php删除,再运行php bin/php/run.php,则会输出: Public … Continue reading

Posted in PHP | Leave a comment

chmod(): Operation not permitted

PHP项目中除了在Web服务器中运行的程序外,可能还会有直接运行的脚本,他们可能共享一些数据或代码,但当如果运行的用户不同(都不是root)时,在调用chmod()时就会出现chmod(): Operation not permitted这样的错误。 事实上这并不是PHP的问题,而是与系统有关, 我的系统是CentOS 5.6。在CentOS中, chmod, chown只能对属于执行该命令的用户的文件进行操作。对于Fedora, Redhat应该是一样的。

Posted in Linux, PHP | Tagged , , | Leave a comment

CentOS5.6上GD库支持freetype的问题

不知是我的系统问题还是CentOS本来就存在这个问题,通过yum install gd gd-devel 安装的GD库不支持freetype, 即使在编译PHP时添加–with-freetype-dir=/usr/lib也没有用。 最后只有将通过yum安装的gd清除(这一步很重要),重新编译gd: ./configure –prefix=/usr/local/gd\ –with-jpeg=/usr/lib\ –with-png=/usr/lib\ –with-xpm=/usr/lib\ –with-freetype=/usr/lib\ –with-fontconfig=/usr/lib\ 重新编译PHP: ./configure –enable-fpm\ –with-openssl\ –with-zlib\ –enable-calendar\ –with-curl\ –with-curlwrappers\ –enable-ftp\ –enable-mbstring\ –with-mysql=mysqlnd\ –with-mysqli=mysqlnd\ –with-pdo-mysql=mysqlnd\ –enable-pcntl\ –enable-sockets\ –enable-zip\ –enable-soap\ –with-fpm-user=www\ –with-fpm-group=www\ –with-mcrypt=/usr/lib64\ –prefix=/usr/local/php\ –with-jpeg-dir=/usr/lib\ –with-png-dir=/usr/lib\ –with-freetype-dir=/usr/lib\ –with-gd=/usr/local/gd2\ –with-gettext … Continue reading

Posted in Linux, PHP | Tagged , , , | Leave a comment