修正開啟 php 網頁變成下載的問題

Posted by admin on 24 元月, 2011 14:51

瀏覽 Linux Apache Server 的 php 網頁無法編譯,卻成了詢問開啓或下載檔案的畫面?



不幸遇到這個常見問題時先別急,以伺服器作業系統 Debian 6 為例,只要修改伺服器 php5 設定就行了。
sudo vi /etc/apache2/mods-available/php5.conf



把11~15行前面加上#號,例如:

#    <IfModule mod_userdir.c>
#        <Directory /home/*/public_html>
#            php_admin_value engine Off
#        </Directory>
#    </IfModule>

再重新啓動 Apache 即可。
sudo /etc/init.d/apache2 restart

還是不行?很正常!清除瀏覽器的 Cache ,或改用另一個瀏覽器,換一部電腦測試就可以了。

【圖片來源】
php 標誌圖片取自 Wikipedia。

Linux Server Bind IPv6 設定

Posted by admin on 12 元月, 2011 15:50

作業系統:Debian 5 / Debian 6 / Ubuntu 10 / Ubuntu 11

實作目的為將 DNS Server 與網頁伺服器分別設定 IPv6 固定位址,以及增加 DNS 網域名稱伺服器 IPv6 解析記錄。設定過程主要包含這兩部主機的網路界面,以及 Linux Bind 服務的正解記錄。

【網路環境測試】
開始動手前先執行 ifconfig 指令查詢網卡狀態,發現其中兩行與 IPv6 相關:
  inet6 addr: 2001:288:xxxx:0:20c:29ff:fe66:xxxx/64 Scope:Global
  inet6 addr: fe80::20c:29ff:fe66:xxxx/64 Scope:Link

再以「ping6 -c 5 ipv6.google.com」指令試著 ping 校外主機也能成功,這表示主機作業系統和新購的路由器皆已支援 IPv6 通訊協定,只需增加網卡 IPv6 固定位址設定即可。

【網路界面設定】
sudo vi /etc/network/interfaces

DNS 伺服器及網頁伺服器分別新增 IPv6 設定,以DNS 伺服器為例,如:
iface eth0 inet6 static
   address 2001:288:xxxx::2
   netmask 48
   gateway 2001:288:xxxx::1
其中 Netmask 部份,一般的設定值是64,配合縣內規畫改為48,而末行的 Gateway 省略不指定也可以。

或者加裝一張 IPv6 位址專用,代號為「eth1」的網路卡也行,以另一部使用 IPv6 位址的網頁伺服器為例,「/etc/network/interfaces」裡應有下列設定內容:
auto eth1
iface eth1 inet6 static
  address   2001:288:xxxx::3
  netmask  48   gateway 2001:288:xxxx::1

網路服務重新啟動
sudo /etc/init.d/networking restart

【網卡狀態查詢】
除了 ifconfig 指令以外,也可用 ip 指令查看網卡狀態:
ip -6 addr show dev eth0 (或eth1)
顯示指定的「2001:288:xxxx::x」IPv6位址:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:288:xxxx:x:20c:29ff:fe15:21f2/64 scope global dynamic
       valid_lft 2591978sec preferred_lft 604778sec
    inet6 2001:288:xxxx::x/48 scope global
       valid_lft forever preferred_lft forever

【網路連線測試】
以「ping6」指令 ping 到「ipv6.chc.edu.tw」應該不成問題:
ping6 -c 5 ipv6.chc.edu.tw

或使用另一部支援 IPv6 協定的電腦,ping 回這部主機:
ping6 2001:288:xxxx::2 或 ping6 2001:288:xxxx::3

如果 ping 的結果正常,表示兩部主機皆已具備 IPv6 網址。網頁伺服器部份至此「完工」,接下來進入「Bind9」DNS 伺服器設定步驟。

【DNS 伺服器設定】
檢視 Bind 設定檔,確認已有「listen-on-v6」設定…
sudo vi /etc/bind/named.conf.options
listen-on-v6 { any; };

Debian 5.07 的 Bind 以「named -v」查看版本訊息,顯示為「BIND 9.6-ESV-R3」,IPv6 的支援設定已為預設選項。

先把 DNS 正解設定妥善即可符合常用需求,反解部份留待日後再新增。正解設定最重要的「Zone File」在「/etc/bind/named.conf.local」裡指向「/etc/bind/db.xxxx.chc.edu.tw」這個檔案, 其中已列出原有的 IPv4 正解設定。IPv6 的寫法除了 IP 位址不同外,另一差別只是將「A」改成「AAAA」,再加上兩列關於這些主機新增的設定:
sudo vi /etc/bind/db.xxxx.chc.edu.tw
加入:
dns             IN      AAAA    2001:288:xxxx::2
www           IN      AAAA    2001:288:xxxx::3

重新啟動 DNS 服務…
sudo /etc/init.d/bind9 restart

【DNS 測試】
到另一部電腦以常用的「nslookup」指令測試 DNS 伺服器,這部電腦同樣需有 IPv6 網路界面。Debian 系統如果沒有 nslookup 指令,需再用「sudo apt-get install dnsutils」指令新增。

nslookup [-option] [FQDN] [server] 是 nslookup 指令的用法,若以學校 DNS 伺服器 IP 為查詢主機,參數「-type=aaaa 」指定 IPv6 為查詢模式,查詢學校網頁伺服器:
user@hostname:~# nslookup -type=aaaa www.xxxx.chc.edu.tw 163.23.114.xxx

Server:         163.23.114.xxx
Address:        163.23.114.xxx#53
www.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::3

再用 Hinet 的 DNS 伺服器查詢,確認從學術網路以外的地方也能解析網域名稱。
user@hostname:~# nslookup -type=aaaa www.xxxx.chc.edu.tw 168.95.1.1

Server:         168.95.1.1
Address:       168.95.1.1#53

Non-authoritative answer:
www.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::3

Authoritative answers can be found from:
xxxx.chc.edu.tw nameserver = dns.xxxx.chc.edu.tw.
dns.xxxx.chc.edu.tw     internet address = 163.23.114.xxx
dns.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::2

DNS 的查詢也可用「dig」指令:
dig [-option] [FQDN] [@server]  改成這一串指令:
dig -t aaaa www.xxxx.chc.edu.tw @168.95.1.1

這樣應該就大功告成了!因為用其他的網域名稱查詢,出現「Can't find ……: No answer」的錯誤訊息。:)

以變動最少的原則,僅僅修改兩個設定檔,暫能達成通過 IPv6 支援檢測的階段目標,後續仍有其他問題需再慢慢研究解決。

【相關網站】
關於IPv6 BIND9 Server Howto 彰化縣IPv6偵測網站 網站IPv6支援檢測 Test your IPv6

MP-BIOS bug: 8254 timer not connected to IO-APIC

Posted by admin on 05 元月, 2011 10:39

Debian 5 開機出現錯誤訊息,主機停在這個畫面無法啟動。

MP-BIOS bug: 8254 timer not connected to IO-APIC
Kernel panic - not syncing:  IO-APIC + timer doesn't work! Boot with apic=debug and send a report. Then try booting with the 'noapic' option



以前也曾遇到這個狀況,不管這個訊息直接 Reboot 有時候還是可以開機,趁著正常運作時修改 grub 開機設定,期望能解決這個問題。
sudo vi /boot/grub/menu.lst

在檔案未端有開機選單的設定:
## ## End Default Options ##
title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet
initrd          /boot/initrd.img-2.6.26-2-686

title           Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro single
initrd          /boot/initrd.img-2.6.26-2-686
### END DEBIAN AUTOMAGIC KERNELS LIST

在預設的開機項目上加入「acpi=off」參數:
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet acpi=off

重新開機正常!

至於這個方法是否真能一勞永逸?那就得再觀察一陣子才知道了。

近期文章

文章彙整

新聞交換