[ubuntu]開機組態伺服器錯誤

發表留言

昨天將ubuntu重開機後,出現了以下錯誤

組態伺服器錯誤︰/usr/lib/libgconf2-4/gconf-sanity-check-2 以狀態256關閉

ok,整個桌面的風格跑掉,而且最糟的是無法登入了。
google了幾個解法︰

  1. sudo chomd 1777 /tmp
  2. sudo chmod 755 $HOME
  3. sudo chmod /etc/gconf/gconf.xml.*/
  4. sudo dpkg-reconfigure gdm
  5. sudo apt-get install gnome-panel
  6. sudo chown -R username:username /home/username

我試了第一個問題就解決了,其他就參考囉

[每週小技巧] Linux 指令功能雜記

發表留言

本週的工作都在調查與試著建置系統,幾乎沒有碰到管理工具。

因此這次的小技巧內容較無系統性,就僅是將本週用到的一些指令功能作個紀錄

將來有時間的時候在將他們一一統整起來。

本週回顧如下:

  1. 在 more 中按v可直接在將該閱覽文件用vim開起來。
  2. grep -v pattern 可濾出不含pattern的行
  3. kill PID不work的時候,試試kill -9 PID
  4. SQL Server 中 使用where => WHERE (‘colname’=condition)

[每週回顧] linux上單一網卡設定多個ip的作法與問題

2 則迴響

假設你要設定的網卡為 eth0

則設定指令如下


$ sudo ifconfig eth0:? ip mask

# ?為一整數,如 eth0:0

取消該設定指令則為

$ ifconfig eth0:? down

我本來覺得down只是關閉該項服務而非完全去除該設定
但我down掉eth0:?後再用

ifconfig -a

結果還真的看不見eth0:?了
不知道down是不是真的有刪除該個網路介面設定的功能?

[CodeIgniter]如何去掉 URL 中的 index.php

2 則迴響

使用CodeIgniter開發網頁時網頁時,除了呼叫預設Controller的index()方法之外

網頁的的URL中總是會出現一個很醜的index.php

以我自己的環境為例為例:

我的apache根目錄為 /var/www

在此目錄下我放置了一個CodeIgniter目錄名為ci

因此對CodeIgniter來說我的baseurl就是就是: http://localhost/ci

假設我有個Controller叫main.php (在 /var/www/ci/system/application/controller/ 下)

又假設在main.php中有個方法叫test()好了

當我要呼叫test()的時候

URL就會變成 http://localhost/ci/index.php/main/test

然而,我認為這是個很醜的URL

而更重要的是,大家都覺得這是個很醜的URL (至少google出來的結果是這樣沒錯)

因此,就有了解決的方法

但在說明除掉index.php的方法之前,有幾件事情要先交代一下

  1. 雖然在別的php  framework中也有類似的處理,但本篇文章只針對CodeIgniter
  2. index.php的位置在CodeIgniter的根目錄下 ( for my case, it’s under ci/ )
  3. 雖然說是要「除掉」index.php,但只是不讓index.php在URL中出現,index.php仍會且也必須存在
  4. 在以下的設定中,我只知道這樣會work。有許多我不知其所以然的地方,無法說明得很詳細,所以還請各位高手大德們不吝指教

好,梗鋪得很長我知道,那就開始設定了

總共有5個步驟

Step 1: 確定apache有啟動mod_rewrite模組

Anyway mod_rewrite 應該是apache中與URL改寫有關的模組(吧?)
因此,要確定他有跑起來

作法

到 /etc/apache2/httpd.conf 中找到一行如下

#LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

將註解拿掉,存檔
就好了

 

但是很不幸的是,在Debian/ubuntu的環境下
httpd.conf的設定已被拆散至許多不同的地方
所以要多花點功夫
首先,httpd.conf大部分的設定都被移到了apache.conf中
於是先打開他再說(也是在/etc/apache2/下)
然後找到下面這段

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

這段是模組的設定
可以看出來他要引入mods-enabled目錄下以.load 與 .conf結尾的檔案
於是下一步我們就到mods-enabled/裡看看到底是怎麼一回事

peter@mfc118:/etc/apache2$ ll mods-enabled/
總計 8
drwxr-xr-x 2 root root 4096 2010-12-31 14:08 ./
drwxr-xr-x 7 root root 4096 2010-11-29 10:21 ../
lrwxrwxrwx 1 root root   28 2010-11-09 15:45 alias.conf -> ../mods-available/alias.conf
lrwxrwxrwx 1 root root   28 2010-11-09 15:45 alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 root root   33 2010-11-09 15:45 auth_basic.load -> ../mods-available/auth_basic.load
(略)…

會發現裡面都是指向mods-available/的soft link

 

於是再前往mods-available/一探究竟
果然在該目錄下發現rewrite.load這個檔案
打開一看,內容如下

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

哇哩勒~ 繞了一大圈結果做的事情一模一樣
所以趕快在mods-enabled/裡作一個指向mods-available/rewrite.load的soft link就就ok啦!

 

上面兩個方式都是直接修改設定檔的作法,在apache2中好像有個更簡單的方式可以達成
只要利用下列指令

$ sudo a2enmod

然後會跳出一堆模組服務問你要開哪一個
然後跟著鍵入

rewrite

就ok了

上面三個方法都可以完成步驟一,請挑一個使用即可

Step 2: 利用.htaccess建立URL改寫規則

在啟動了mod_rewrite模組後只是讓apache有了改寫URL的能力
必須還要給予他改寫得規則才行
而這些規則必須要寫在一個名為.htaccess的檔案中
好了,預備知識又要來了

  1. 在預設環境中.htaccess是不存在的,要手動建立
  2. 要放置在要apache的根目錄或其子目錄下

然後把下面的程式碼填到把下面的程式碼填到.htaccess裡面

<IfModule mod_rewrite.c>   # if tag 裡面放的是mod_rewrite 有啟動時要做的事情
    
    RewriteEngine On  #打開改寫引擎
    RewriteBase /  #這裡要說明說明.htaccess的擺放路徑,/ 代表擺放在apache的根目錄下
    
    #改寫規則一
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]
    
     #改寫規則二
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]

     #改寫規則三
    RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]

</IfModule>

<IfModule !mod_rewrite.c>  # if tag 裡面放的是mod_rewrite 沒有啟動時要做的事情
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.

    ErrorDocument 404 /index.php
</IfModule>

Step 3: 確定apache可以讀取.htaccess

真的很煩我知道
但是還是要用好他才行

作法

到httpd.conf找到下列這段(註一)

<VirtualHost *:80>
        ....
	<Directory 這裡是apache根目錄的實際路徑>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
        ....
</VirtualHost>

AllowOverride None

改成

AllowOverride FileInfo

AllowOverride All

就OK了(註二)

*註1:
在Debian/Ubuntu中
要到 /etc/apache2/sites-available/default 裡找到此段來修改

*註2:
如果在.htaccess中不設定RewriteBase的話
就要改成

AllowOverride AuthConfig FileInfo

Step 4: 修改CodeIgniter 的 Config

作法

在config.php中
找到

$config['index_page'] = "index.php";

修改成

$config['index_page'] = "";

Step 5: 重啟apache

作法

執行下列指令

$ sudo service apache2 restart

打完收工

這樣應該就可以除掉URL 中的 index.php了

使用curl在終端機下post資料給php

發表留言

原以為php只能接收html表單的資料,
但其實在終端機與shell中同樣能作到傳遞資料給php的工作。
靠的就是 curl 套件。

在ubuntu中可用apt來安裝curl:

$ sudo apt-get install curl

post資料的語法為:

$ curl -F 傳送之變數名稱=值  送往的php檔案路徑

傳檔的語法為:

$ curl -F 傳送之變數名稱=@檔案  送往的php檔案路徑

post多個資料的語法為:

$ curl -F 傳送之變數名稱=值 -F 傳送之變數名稱=值  送往的php檔案路徑

Example:
post

curl -F a='str_a' -F b=@file /xxx/ooo/abc.php

receive ( inside abc.php )

$_POST['a']
$_FILE['b']

使用Xming實現在Windows上遠端操作Linux的GUI程式

發表留言

今天要幫呂副主任的 PC ( Windows OS) 安裝可以遠端操作 RedHat 上D2D (WINS)  與 GFE  的環境

本來的解決方案是要安裝Cygwin 再寫一隻Shell 把X 的畫面回傳

但學長說用這問題只要利用到X server  的功能,因此用Xming 就可以辦到,不需要用到肥大的Cygwin

Xming  的安裝方法如下

1. 下載所需檔案

官網載點下載Public Domain Releases中的三個執行檔

2.執行上面下載的三個執行檔即可完成安裝

Xming 簡易設定

PHP在 Vim 中的折疊 (syntax folding) 設定

6 則迴響

首先,在$HOMEE下的 .vimrc 中需加入兩項設定如下

filetype plugin indent on
set  foldmethod = syntax

再來要到 $VIMRUNTIME/syntax/php.vim 裡找出

let php_folding = 0

這行 ( 約在第69行 )

將 0 改為 1  或 2 即可在vim中對php使用語法折疊功能

其設定數字意義如下表

設定值 意義
0 不啟用折疊功能
1 只折疊類別 ( class ) 與函數( function )
2 折疊所有由 { } 包圍的區塊( block )

Older Entries