2009年9月28日 星期一

undefined reference to `pow'

今天重灌了ubuntu

想要寫些程式的時候出現了下面的錯誤訊息

undefined reference to `pow'
也不只這個,凡是跟數學函式相關的使用就會出現這類錯誤
像是undefined reference to `sqrt'等等

但是我有確實的include <math.h>,卻仍然找不到

而後來google了一下,發現可以從gcc下手解決
我把原來的
gcc -o xxx xxx.c
加上-lm 如下
gcc -lm -o xxx xxx.c
就成功解決這個問題

再找這問題的時候額外的一個問題
警告: 隱含宣告與內建函式 「printf」 不相容
這是因為從新安裝的時候沒有安裝包含lib的套件
所以只要輸入下面指令安裝就可以解決

sudo apt-get install build-essential

2009年9月11日 星期五

無法存取 \\XXX 。您可能沒有使用這個網路資源的權限。請聯絡這個網路伺服器的系統管理員,了解您是否有存取權限。 登入失敗:使用者帳戶限制。可能原因為不允許空的密碼,登入時數限制,或強的原則限制。

今天幫學長處裡電腦問題
平常我們都使用\\IP或是\\SrverName或是從網路芳鄰去存取遠端電腦上的資源
但是今天出現的問題是我們這邊一堆電腦
每一台都能連到Server就是學長那台電腦不能
他存取的時候會出現

無法存取 \\XXX 。您可能沒有使用這個網路資源的權限。請聯絡這個網路伺服器的系統管理員,了解您是否有存取權限。
登入失敗:使用者帳戶限制。可能原因為不允許空的密碼,登入時數限制,或強的原則限制。

這樣的錯誤訊息(從別的地方copy來的,可能會有些不同)


2009年9月10日 星期四

window中文網頁移植到Linux變成無法解讀

今天把一些網頁從windows上轉移到Linux上的時候
部分網頁發生變成亂碼的情況,後來看了一下
windows上的網頁都是big5編碼,而Linux上則是utf-8
但是這種情況我加上header
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
一點用都沒有

後來找了些資料,發現Linux上有轉碼的指令

iconv -f [fromcode ]-t [tocode] [file]


透過這種編碼指令可以替我解決這種部分網頁編碼問題
iconv -f big5 -t utf8 index.php > index_utf8.php

參考資料

2009年9月9日 星期三

Apache:You don't have permission to accesson this server.

今天幫別人用Linux建帳號的時候
須要每個user都有屬於自己專屬的www家目錄,很幸運的apache就有這種功能了

先去找apache的設定檔 /etc/httpd/conf/httpd.conf

去裡面尋找UserDir的設定值

<IfModule mod_userdir.c>
........
UserDir public_html

</IfModule >

一般來講預設都是public_html,也就是說只要user家目錄下有個public_html目錄
那就會是他的wwwroot目錄
一般來說都是要自己建,假設我有個帳號Tom
那user家目錄就是
/home/Tom
我可以用mkdir去建我要的public_html
mkdir /home/Tom/public_html
但是我要存取的時候出現了錯誤訊息
You don't have permission to accesson this server.
上網google一下資料,看到人家說要修改

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

< /Directory >

參考資料

把deny改成allow,不過後來發現早就設定好了 所以上面那招並沒解決問題
後來想想應該是權限問題,但是用ls -al 查了一下,我public_html跟其下權限都已經是755了

後來去看了一下鳥哥的文章,原來是使用者家目錄本身也要設定成755
新建的user帳號的家目錄權限是drwx----- ,必須修改成drwx-xr-x才能讓apache存取該目錄
所以建public_html正確順序應該如下

root狀態

~]$ cd /home/Tom
~]$ mkdir public_html
~]$ chmod 755 public_html
~]$ chmod 755 /home/Tom


user狀態


~]$ cd ~
~]$ mkdir public_html
~]$ chmod 755 public_html
~]$ chmod 755 ~

2009年9月6日 星期日

ubuntu 9.04 PCMAN X 亂碼問題

今天剛灌好ubuntu 9.04來玩
看到他很貼心的提供了BBS工具,想說上個ptt
結果上去看到一堆方方塊塊的亂碼

後來找到解決方法就是開啟上方menu的[檢視]->[字型]
選擇[AR PL Ukai TW]
就能正常顯示中文了



Linux設定DNS

之前windows要設置DNS很容易
不過Linux下要設定要去修改文件/etc/resolv.conf
vi /etc/resolv.conf
最簡單的設定

nameserver xxx.xxx.xxx.xxx #第一個DNS Server位置
nameserver xxx.xxx.xxx.xxx #第二個DNS Server位置


我在裝ubuntu 9.04的時候/etc找不到resolv.conf文件,到是有一個resolv.conf資料夾
不過要設置DNS還是一樣去設/etc/resolv.conf,自己創造一resolv.conf個就可以了

題外話,在玩Ubuntu 9.04的時候,桌面特效的menu不見了
要使用的話要再去安裝,安裝指令如下
sudo apt-get install compizconfig-settings-manager
之後就會出現compizconfig-settings-manager讓我們使用桌面特效了
參考資料

vsftpd:530 This FTP server is anonymous only.

今天實驗室server重開的時候 FTP忽然登不進去了,沒辦法使用一般帳號登入 只能用匿名帳號登入
錯誤訊息如下
530 This FTP server is anonymous only.
後來google了一下資料,要去修改/etc/vsftpd/vsftpd.conf
看到有說要增加

pam_service_name=vsftpd

或是

local_enable=YES

以我的情況,我是屬於後者 我查了vsftpd.conf
local_enable被設置成NO(有的人是被#註解調)
local_enable要設置了才能讓機器上的實體帳號才能登入

可是設置之後卻還是不能登入,server也restart過了
後來在找了一下資料,我的vsftpd是被xinetd啟動的,xinetd的設置檔是放在/etc之下
所以我把/etc/vsftpd/vsftpd.conf整份複製到/etc/vsftpd.conf就可以了
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf

但是啟動後出現另一個錯誤訊息
500 OOPS: could not bind listening IPv4 socket
查了一下原因是因為port 21衝突,21 port被重複使用了

我之前用/etc/init.d/vsftpd去啟動了vsftpd,但是xinetd也啟動了vsftpd
關掉其中一個就好了,我是選擇關掉xinetd啟動那個
輸入

vi /etc/xinetd.d/vsftpd

修改xinetd的vsftpd設定


# default: on
# description:
# The vsftpd FTP server serves FTP connections. It uses
# normal, unencrypted usernames and passwords for authentication.
# vsftpd is designed to be secure.
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID
# log_on_failure += USERID
nice = 10
disable = yes
}


把disable設定成yes,之後輸入
/etc/init.d/xinetd restart
重新啟動服務就可以了