OpenSSH 今日公佈 Client Bug 漏洞 CVE-2016-0777 and CVE-2016-0778,發生原因是 SSH Clinet 跟 Server 溝通時,新功能 roaming
造成傳輸過程被惡意程式破解,影響的 OpenSSH 版本為 5.4 – 7.1. 大家快看看自己是否為這版本區間。此問題會發生在 SSH Client 而不是 Server 端,所以 Linux FreeBSD 和 MacOS 都需要升級 OpenSSH,如果你是在 Windows 用 Putty 則不受影響。
Category: FreeBSD
簡報 GNU Make, Autotools, CMake 簡介
LiveReload 網頁程式設計師必備工具
如果讀者目前從事的工作跟 Web Develop 相關,相信每天在按 Ctrl + R 的次數至少在上百次吧,也許花在這上面的時間會真的很煩,有沒有想過如果每次修改 html php css s[ca]ss js 檔案後,網頁會自動幫忙 reload 呢,這樣就可以另外買個螢幕把網頁拉過去,修改好檔案,螢幕就會幫忙重新整理,大家省下這些時間就可以專心寫 Code 了啦,解決此問題非常容易,那就是裝上 livereload 這套 rubygem 程式,底下先看看 livereload 影片:
Continue reading “LiveReload 網頁程式設計師必備工具”
安裝 XCache 加速 PHP 執行速度
前言
最近 FreeBSD 系統常常會當機,加上 Varnish cache + APC 一直給我出包,所以這次就換了一套加速 PHP 執行的套件 XCache,這是一套由華人所開發的加速器,可以參考篇台灣PHP聯盟論壇所發表 PHP 加速器 – xcache,裡面可以看到這篇裡面就有中文的對話,非常好玩,這次也順便把 PHP 升級到 5.3.8 版本,還有 Varnish 一次升級到 3.0.1 版本。各家 PHP 加速器
大家都知道目前網路上知名的 PHP 加速器 apc, eaccelerator, phpa, truck-mmcache,這幾套網路上資料很多,大家都可以試著玩看看,尤其是前面兩套 APC 及 eaccelerator,phpa 目前已經不再維護了,truck-mmcache 版本好像也沒啥在更新,距離上次更新是 2009-07-17,Xcache 作者研究 truck-mmcache 跟 APC 已經很長的時間,他發現 APC 的程式碼比起 truck-mmcache 還要簡單更容易瞭解,所以大家也可以研究 APC 相關程式碼。 Continue reading “安裝 XCache 加速 PHP 執行速度”好用 PHP debug extension Xdebug on FreeBSD 安裝
之前介紹 FirePHP 這套好用的 PHP Debug 工具,也寫了一篇針對 CodeIgniter 的安裝方式,請參考: [PHP] 好用 Debug PHP 工具 FirePHP for FireFox on CodeIgniter,今天要介紹一套好用的 PHP debug Extension: Xdebug 的安裝方式,作者環境是在 FreeBSD 上,Windows 安裝方式就到官方網站下載對應的 PHP Windows binaries,目前在 FreeBSD ports 上面的版本是 2.1.0,但是 Xdebug 作者已經更新到 2.1.1,自己就順手發了一個 patch 157677 給 FreeBSD 官方 ports 去 update。
Ref:
Xdebug MUST be loaded as a Zend extension
FreeBSD 安裝步驟
# cd /usr/ports/devel/php-xdebug # make install clean設定 /usr/local/etc/php/extensions.ini 檔案後面加入
extension=xdebug.so設定 /usr/local/etc/php/php.ini 檔案後面加入
xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /tmp/profiler重新啟動 apache
/usr/local/etc/rc.d/apache22 restart之後執行指令 php -v 會發現出現底下 warning message:
PHP Warning: Xdebug MUST be loaded as a Zend extension這時候請修改 /usr/local/etc/php/extensions.ini
zend_extension="/usr/local/lib/php/20090626-zts/xdebug.so"這樣大致上就完成了,你會發現當寫 PHP 網頁如果出現錯誤,會詳細列出哪裡的錯誤,可以參考 Xdebug Documentation 看一下 PHP 是否 load Xdebug extension:

[FreeBSD] 利用 fsck 指令修復不正常斷電關機
由於人不在機器前面,所以都請學弟妹幫忙直接拔電在插電,現在問題出來了,完全不能開機了,現在就只能進去單人模式修復,其實修復也非常容易,進入開機選單,選擇 Single user mode 模式,進入之後會直接看到底下訊息提示:
enter full pathname of shell or return for :/bin/sh:沒意外就直接按下 Enter 鍵就可以了,由於 fsck 指令在修復過程不可以先 mount 磁區,所以先利用 mount -a 來掛上所有磁區
# 掛上所有磁區 mount -a # 顯示硬碟磁區 df -hConsole 會看到
Filesystem Size Used Avail Capacity Mounted on /dev/da0s1a 496M 341M 115M 75% / devfs 1.0K 1.0K 0B 100% /dev /dev/da0s1e 496M 16M 440M 4% /tmp /dev/da0s1f 24G 15G 6.4G 71% /usr /dev/da1s1d 33G 22G 8.4G 73% /usr/home /dev/da0s1d 4.7G 2.5G 1.8G 58% /var如果針對 /dev/da1s1d 做修復,請下底下指令
umont /usr/home fsck -y /dev/da1s1dfsck 修復完成會出現底下訊息
** /dev/da1s1d ** Last Mounted on ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 2 files, 2 used, 506337 free (25 frags, 63289 blocks, 0.0% fragmentation)如果中間有錯誤訊息,就繼續 fsck 步驟,直到修復完成,完成之後下 reboot 重新開機,就可以看到 login as: 可以在 rc.conf 裡面加入兩行設定
fsck_y_enable="YES" background_fsck="YES"[整理] 文件系統修復 【FreeBSD】系統異常關機修複方式 FSCK [FreeBSD] 請教: FreeBSD斷電後fsck後能不能自動reboot
ProFTPD UseEncoding 繁體中文亂碼解決 Localization

[X] NLSUOTA Use nls (builds mod_lang)自行編譯請按照底下步驟
./configure --enable-nls make make install
UseEncoding 設定
Syntax: UseEncoding on|off|local-charset client-charset Default: None Context: "server config",在 1.3.2rc1 版本之後才有支援,請複製底下設定,貼到 proftpd.conf, Module: mod_lang Compatibility: 1.3.2rc1
# 简体中文環境 UseEncoding UTF-8 GBK # 繁体中文環境 UseEncoding UTF-8 Big5Reference: ProFTPD module mod_lang centos上解決proftp中文亂碼問題
[FreeBSD] update apache -> 2.2.15, PHP -> 5.3.2, and MySQL downgrade to 5.1.9
昨天升級了 FreeBSD 的 Apache, PHP, and MySQL,遇到很多地雷阿,最多的就是 PHP 的部份,因為本來自己使用 5.2.11 版本,但是在 commit port 的時候發生去裝 5.3.2 版本,所以就直接砍掉全部重練,先是遇到 MySQL 問題,原先在 database/mysql60-server 已經被 FreeBSD 移除,任何關於 mysql60 的相關 port 都被 remove 掉了,只好 downgrade 到 mysql 5.1.48 版本,移除同時順手把 apache PHP 相關都拿掉了。
移除 apache mysql php 相關 ports
-rf 依序找尋相關 Mysql ports 移除pkg_deinstall -rf mysql60-server接下來安裝 MySQL 5.1.48 Server and Client,可以找到在 databases/mysql51-server and databases/mysql51-client,直接安裝即可
cd /usr/ports/databases/mysql51-server && make install安裝 Apache 2.2.15
cd /usr/ports/www/apache22 && make WITH_MPM=worker install安裝 PHP 5.3.2,FreeBSD 把 5.2.X 跟 5.3.X 分開不同資料夾 lang/php5, lang/php52,extension 也是分成兩個,所以要安裝 5.2 版本也是可以的
cd /usr/ports/lang/php5 && make install cd /usr/ports/lang/php5-extensions/ && make install以上安裝好,就是苦難的開始,首先 MySQL 從原本的 6.0.9 降到 5.1.48,造成所有資料庫無法讀取,也沒辦法正確啟動 MySQL,馬上噴出底下問題:
090205 11:14:24 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql /usr/local/libexec/mysqld: Unknown collation ‘#46’ in table ‘plugin’ definition 090205 11:14:24 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it. 090205 11:14:24 InnoDB: Started; log sequence number 0 46429 090205 11:14:24 [ERROR] Fatal error: Can’t open and lock privilege tables: Unknown collation ‘#46’ in table ‘host’ definition為啥會出現紅色那段字,就是因為字元集不同,MySQL 6 有支援 utf8mb4,但是 5.1.48 版本沒有,所以才會造成無法啟動,解決方法呢?就是把 /var/db/mysql/mysql 砍掉,在重新啟動就可以了,當然您的資料庫也是無法使用,再去其他電腦裝上 MySQL 6.0.9 之後,把 /var/db/mysql/ 底下的資料庫 Copy 過去一份,利用 mysqldump 把全部資料庫 dump 下來,再 restore 回去原來的系統,大致上就可以了。 對於把 PHP 升級到 5.3 的時候,心裡就在想會遇到很多雷,果然是如此,很多 opensource 都尚未支援到 php 5.3,也因此很多函數都無法支援,ereg_ 系列都必須換成 preg_,register_globals 的移除,也不能使用 HTTP_GET or HTTP_POST,把 register_long_arrays 拿掉,參考: http://php.net/manual/en/ini.core.php,CodeIgniter V 1.7.2 開始支援 PHP 5.3.0 版本,這樣大致上所有專案都可以順利啟動,底下是在 WordPress 遇到的問題:
Warning: strtotime() [function.strtotime]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Helsinki’ for ‘EEST/3.0/DST’ instead in /path/to/my/www/wp-includes/functions.php on line 35這在 WordPress 官網也是有提出此問題,解決方式有兩種,一種是在 wp-config.php 加上 date_default_timezone_set(‘UTC‘); 或者是 date_default_timezone_set(‘Asia/Taipei‘);,另一種是修改 php.ini,修改
; Defines the default timezone used by the date functions date.timezone = Asia/Taipei這樣大致上修補完成,其他程式的修改這裡就不補充了,底下是 PHP 網站所支援的 time zone,可以參考看看其他時區 Reference: Php 5.3.0 & WP 2.8 (It is not safe to rely on the system’s timezone) Description of core php.ini directives 現在寫 PHP6-compatible 的一些技巧 List of Supported Timezones