四月 10

系統環境為,如果有所出入請自行判斷要修改的地方
Linux Debian 5.0
Apache 2
PHP5
Perl

要完成這個目標必先要裝 PHP APC 這個外掛

怎麼安裝呢?當然是使用無人不知,無人不曉 apt

懶人包已經準備好了,請服用

#! /bin/sh
apt-get -y install apache2-threaded-dev php5-dev php-pear perl
pecl install apc
echo "extension = apc.so" > /etc/php5/conf.d/apc.ini
echo "apc.stat=0" >> /etc/php5/conf.d/apc.ini
echo "apc.enabled=1" >> /etc/php5/conf.d/apc.ini
echo ";apc.shm_size=快取大小,單位:MB" >> /etc/php5/conf.d/apc.ini
echo "apc.shm_size=64" >> /etc/php5/conf.d/apc.ini
echo "apc.ttl=300" >> /etc/php5/conf.d/apc.ini
echo "apc.user_ttl=300" >> /etc/php5/conf.d/apc.ini
echo "apc.num_files_hint=1024" >> /etc/php5/conf.d/apc.ini
echo "apc.mmap_file_mask=/var/tmp/apc.XXXXXX" >> /etc/php5/conf.d/apc.ini
echo "apc.include_once_override = 1" >> /etc/php5/conf.d/apc.ini
echo "apc.enable_cli=1" >> /etc/php5/conf.d/apc.ini
cp /usr/share/php/apc.php /var/www
chown www-data /var/www/apc.php
chgrp www-data /var/www/apc.php
chmod 755 /var/www/apc.php
perl -i -pe "s/\'ADMIN_USERNAME\',\'apc\'/\'ADMIN_USERNAME\',\'admin\'/g" /var/www/apc.php
perl -i -pe "s/\'ADMIN_PASSWORD\',\'password\'/\'ADMIN_PASSWORD\',\'admin123\'/g" /var/www/apc.php
/etc/init.d/apache2 restart

首先先以 root 登入系統

請把 code 存成 install_apc.sh

然後給予可執行的權限( chmod 755 install_apc.sh)

執行 ./ install_apc.sh

出現以下畫面時,按下 Enter

47 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
1. Use apxs to set compile flags (if using APC with Apache)? : yes

1-1, 'all', 'abort', or Enter to continue:

懶人包預設會把 APC 的管理頁面,copy 一份到 /var/www 如果有特殊需求請自已搬移

預設的 APC 管理帳號是 admin 密碼是 admin123

如果要修改請編輯 /var/www/apc.php (修改後記得重啟 apache2)

defaults('ADMIN_USERNAME','你要的帳號');
defaults('ADMIN_PASSWORD','你要的密碼');

經過測試的結果,真的是差非常多,快到一個不行

如果你發現修改了網頁,可是仍然是顯示舊的,這表是網頁仍在快取中

有2個方法可以解決

1.直接重啟apache2

2.進入APC的管理介面,登入帳密後,點選 Clear opcode Cache

參考資料

[FreeBSD] 安裝 PHP APC 加速網頁速度

PHP APC on Ubuntu 8.04 Hardy





四月 03

在使用 VirtueMart 的購物車時,如果你是使用1.1.3版的AJAX 加入購物車

在第1次把商品加到購物車時是沒問題的,但是同一頁面要繼續購物時就會發生問題


.

解決方法是修改 /components/com_virtuemart/themes/default/theme.js 這個檔案

大約在第35行的地方

找到下面這個程式碼


if (document.boxB) {
document.boxB.close();
clearTimeout(timeoutID);
}

修改成以下的程式碼


if (document.boxB) {
document.boxB.close();
clearTimeout();
}

儲存後就不會有這個問題了

要測試時,記得要先清除瀏覽器的離線快取





三月 24

雖然官方的語言包中文還不算太完整,不過多少也可以勉強用了

安裝完官方語言包你會發現VM(VirtueMart)會是亂碼

這是因為預設的中文語系檔是用big5存的,而Joomla是預設是用UTF-8

把中文語系檔traditional_chinese.php改為以UTF-8存檔就可以解決亂碼的問題

不過因為官方預設是用big5碼存檔的關係,所有的中文語系檔都會有"許蓋功"的問題

也就是說如果文字中有"成功"這2個字,就會變成"成?",接連後面的字串也會受到影響,導致程式錯誤

目前我修正了一些文字上的錯誤,不嫌棄的話可以拿去使用

VirtueMart 1.1.3 繁體中文語系修正

使用前記得先安裝 VirtueMart 1.1.3

繁體中文語系修正檔,下載後於 Joomla 的目錄下解開蓋過舊檔即可





三月 23

在VirtueMart 1.1.3 中,如果修改運送者為中文名稱時,會出現下面錯誤

Warning: Missing argument 2 for vmGet(), called in /var/www/vhosts/all4everyone.de/httpdocs/administrator/components/com_virtuemart/classes/ps_shipping.php on line 113 and defined in /var/www/vhosts/all4everyone.de/httpdocs/administrator/components/com_virtuemart/classes/request.class.php on line 26

解決方法如下

開啟 administrator/components/com_virtuemart/classes/ps_shipping.php

把 113 與 138 這2行中的程式碼
($fields = array( 'shipping_carrier_name' => vmGet($d["shipping_carrier_name"]),)

取代為
$fields = array( 'shipping_carrier_name' => vmGet($d, 'shipping_carrier_name'),

然後存檔,收工

參考資料:
http://forum.virtuemart.net/index.php?action=printpage;topic=50772.0





三月 20

RouterOS 看來應該是會一直玩下去了。越玩越順手

先補上在 WordPress 中可以讓 RouterOS 語法高亮的 SyntaxHighlighter-Plus 樣版

使用的方法可以參考之前的文章幫SyntaxHighlighter-Plus加上新的語言樣版

程式碼另存為shBrushRouterOS.js

SyntaxHighlighter.brushes.RouterOS = function()
{

    var keywords =  'global local do else for from to step in foreach ' +
                    'if put while environment nothing set';

    var commands =  'add comment disable enable export get move remove unset ' +
                    'delay edit blink monitor beep find led len  ' +
                    'list log pick resolve time print toid totime tonum';

        this.regexList = [
                { regex: /#.*$/gm, css: 'comments' },
                { regex: SyntaxHighlighter.regexLib.doubleQuotedString,                 css: 'string' },                // double quoted strings
                { regex: new RegExp(this.getKeywords(keywords), 'gm'),                  css: 'keyword' },               // keywords
                { regex: new RegExp(this.getKeywords(commands), 'gm'),                  css: 'functions' }              // commands
                ];
}

SyntaxHighlighter.brushes.RouterOS.prototype    = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.RouterOS.aliases      = ['ros'];

記得要在/wp-content/plugins/syntaxhighlighter-plus/syntaxhighlighter.php
大約在在112行的位置加入樣版的名子

'RouterOS'=> array('ros'),