洛阳铲的日志

2007年04月9日

不用重新编译PHP也能安装新的模块

Filed under: 生活小札 — HackGou @ 18:18

我是个很传统的人,一直以来,给PHP安装新模块,都是给configure添加新的–with-XXXX或者–enable-XXX,直到当mod_zip.so遇到5.0.4。印象中4.0以上的–with-zip=[DIR],5.2的–enable-zip就OK了,但是遗憾的是,5.0.4和5.1.6并不支持这两个选项,郁闷了,一百多台服务器都是这两个版本,一般是不会轻易进行版本切换的,怎么办?找来找去发现一个好东东:pecl和phpize。 pecl是恐怕知道的人不多,但是提起他的同胞姐妹pear,只要是phper没有不知道的,其实pear和pecl都是php的扩展管理工具,但是两个工具工作的层面不一样:pear安装的大多是php代码写的一些扩展库,比如要给PEAR安装Mail支持, 只需要pear install Mail 就可以完成,而pecl(PHP Extension Community Library )起初是pear的一个sub-repository,侧重于一些C写的扩展库。比如上面提到的mod_zip就是一个pecl。我要给他们安装额外的模块,很简单:
pear/pecl install extension_name
比如: 我需要给PHP安装json支持, pear install json
一阵稀里哗啦,从pear.php.net拉包,解压,自动编译,自动copy到extension_dir 多完美! 如果pear不好使,没关系试试pecl(这种情况正好发生在一个正式环境下面):
pecl install json
如果这些都不好使,还有倒数第二招: phpize phpize是一个php模块编译预处理脚本,能够为extension准备预编译环境,然后进行make、make install就可以很方便的安装,当然这时候extension的源代码是得手工下载的: tar xvfz zip-1.8.8.tgz cd zip-1.8.8 phpize make && make install 大功告成,当然上面三种方案中,都要注意extension-dir和extension=选项的设置,否则,即使编译,安装完成,用php -m也看不见你的工作成果,如果和apache合用,别忘了重新启动apache。
如果上面还是不行,那只有出绝招了: 一切从源码开始,一切皆有可能 :D

2007年04月4日

the ImageMagic 6.3.3 Wand-config bug

Filed under: 生活小札,FreeBSD,Linux — HackGou @ 18:06

顺利安装完ImageMagic 6.3.3之后,无法顺利的把MagickWand 编进PHP,老是在check Imagemagick库的地方报错:
……
Package Wan was not found in the pkg-config search path.
……
PKG_CONFIG_PATH肯定是设置正确了的,而且就算我直接使用Wand-config
-version也无法得到版本号,开始怀疑Wand-config有问题,果然,在里面
–version)
pkg-config –modversion Wan
这句话不对,修改成

–version)
pkg-config –modversion Wand
然后再configure、make、顺利通过

分区后不用重新启动,通知内核磁盘分区表发生变化

Filed under: Linux — HackGou @ 16:48

在正在使用的磁盘上面,使用fdisk创建分区之后,需要重新启动linux, 以重读分区表信息,才能在新的分区上面建立文件系统, 为了不重新启动系统,可以使用partprobe ,来通知内核磁盘分区表 发生变化,之后就可以使用mke2fs创建文件系统了,这个是创建lvm时的一个片段:
Command (m for help): p
Disk /dev/hda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 5099 40957686 83 Linux
/dev/hda2 5100 5349 2008125 82 Linux swap
/dev/hda3 5350 14593 74252430 5 Extended
/dev/hda5 5350 8997 29302528+ 8e Linux LVM
/dev/hda6 8998 12645 29302528+ 83 Linux
/dev/hda7 12646 14593 15647278+ 83 Linux
Command (m for help): t
Partition number (1-7): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help): t Partition number (1-7): 7 Hex code (type L to list codes): 8e Changed system type of partition 7 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/hda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/hda1 * 1 5099 40957686 83 Linux /dev/hda2 5100 5349 2008125 82 Linux swap /dev/hda3 5350 14593 74252430 5 Extended /dev/hda5 5350 8997 29302528+ 8e Linux LVM /dev/hda6 8998 12645 29302528+ 8e Linux LVM /dev/hda7 12646 14593 15647278+ 8e Linux LVM
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16:
Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
[root@Korea ~]# partprobe -s -d
/dev/hda: msdos partitions 1 2 3
[root@Korea ~]# partprobe -s
/dev/hda: msdos partitions 1 2 3
[root@Korea ~]# ll /dev/hda*
hda hda1 hda2 hda5 hda6 hda7
[root@Korea ~]# fdisk -l
Disk /dev/hda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593
cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 5099 40957686 83 Linux
/dev/hda2 5100 5349 2008125 82 Linux swap
/dev/hda3 5350 14593 74252430 5 Extended
/dev/hda5 5350 8997 29302528+ 8e Linux LVM
/dev/hda6 8998 12645 29302528+ 8e Linux LVM
/dev/hda7 12646 14593 15647278+ 8e Linux LVM

Powered by WordPress