添加Apache模块

和php添加模块类似,Apache也有动态添加模块的工具apxs。

找到下载的模块目录

cd /usr/local/apache/modules/filters
// 编译并安装
apxs -ica mod_deflate.c
 
//会出现编译问题,换成绝对路径编译
apxs -ica /usr/local/apache/modules/filters/mod_deflate.c

apxs在编译完成时,会自动将编译好的模块安装到apache的所在的模块目录,例如/usr/local/apache/modules。并在/etc/httpd/conf/httpd.conf添加

LoadModule deflate_module     modules/mod_deflate.so

参考

http://httpd.apache.org/docs/2.2/programs/apxs.html

apxs添加apache模块

动态添加php extension

通常情况下,在手动编译下都会添加一些常用的php模块,例如mbstring、curl等。那如果手动编译后,发现有些应用又需要添加新的php模块呢?

php官方列出了几种动态添加模块的方式:

1. 使用pear来安装pecl的模块。

2. 使用phpize来安装pecl模块。

3. 使用pecl来安装模块。

4. 重新静态编译php,添加相关的模块。

其中1和3都要求已经安装pecl或者pear模块。pecl和pear的命令参数都差不多了。使用pecl安装模块的命令如下:

/usr/local/php5.3.10/bin/pecl install apc
//卸载apc
/usr/local/php5.3.10/bin/pecl uninstall apc

不过我在使用pecl的安装模块出现了编译错误,只好使用phpize来安装。先在pecl.php.net上下载所需要的php模块,例如我需要安装apc。最新的stable版的是3.1.9。

cd /root/tmp
wget http://pecl.php.net/get/APC-3.1.9.tgz
tar xzvf APC-3.1.9.tgz
cd APC-3.1.9
/usr/local/php5.3.10/bin/phpize
./configure
make
make install

这样就安装了一个apc模块。默认情况下会安装include/php/ext/下,以我的为例就是/usr/local/php5.3.10/include/php/ext/。

参考资料

用 PEAR 编译共享 PECL 扩展库

Magento Sales Grid Filter bug

当你使用Sales Order的filter时有时会莫名其妙的出现

就会出现下面Magento经典的报错页面。

在var/report/找到这个报告,显示

SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘ordercomment’ in ‘where clause’

你的错误可能会是下面这样子的:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘create_at’ in ‘where clause’

更可能会是这个:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘status’ in ‘where clause’

从core复制文件app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php到app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php.。

找到create_at,这一栏的addColumn函数

$this->addColumn('created_at', array(
            'header' => Mage::helper('sales')->__('Purchased On'),
            'index' => 'created_at',
            'type' => 'datetime',
            'width' => '100px',
 ));

添加filterindex属性,给表字段添加miantable。这样filter就能找到对应的表了,一般这种情况是安装了一些插件,重写salesresource下的ordergrid_collection这个类,导致filter会找不到对应的字段。当然,造成这个bug是因为我安装了Magemaven OrderComment这个插件。

$this->addColumn('created_at', array(
            'header' => Mage::helper('sales')->__('Purchased On'),
            'index' => 'created_at',
            'type' => 'datetime',
            'width' => '100px',
            'filter_index' => 'main_table.created_at'
        ));
 
// Add order comment to grid
        $this->addColumn('ordercomment', array(
            'header' => Mage::helper('ordercomment')->__('Order Comment'),
            'index' => 'ordercomment',
            'filter_index' => 'ordercomment_table.comment',
        ));

以上代码在Magento CE 1.6.2 测试通过。
参考

How to extend Magento Order Grid