2015年5月23日 星期六

php練習-99乘法表、表單應用(此篇純題目,不具參考價值)

寫法格式上網查或翻書噢!!
軟體
  • notepad++
  • VMware
  • FileZilla
99乘法表
  • $i X $j = $k
方法一:用 for + if
邏輯:j = 1; j <=9; j ++當 j =9時,i +1 ,j 回到1
先試試吧XD
























然後!你會發現最後只出現2系列的乘法......
原因是php在開頭讀取if對j的運算後,不會再跑程式中的j的運算
有沒有很想揍人呢XD沒有的話代表你沒有先試上面的寫法- -

方法二:用2個for作迴圈
邏輯:先用i作迴圈,裡面包j迴圈
就降不然你還期待有甚麼-v-

表單應用
自己找格式......不然呢......做了你就知道為什麼我沒辦法貼格式了- -
於是下面是最後結果

頁面1







輸入後確定,轉向頁面2




頁面2




再來,想辦法把輸入的資料匯進資料庫中吧!
成功後,再做出一個頁面顯示所有使用者的資料
接著再sql將passwqrd加密存到密碼格裡
最後,做出用網址搜尋比對帳號密碼,顯示符合的
答案在紫菜那,嚴禁照抄!!

2015年5月20日 星期三

網路控制燈開關

注意:此範例問題特多- -
硬體

  • 麵包板
  • esp8266 IOT
  • usb轉ttl的板子
  • 照網站步驟接
程式

  • http://makezine.com/2015/04/01/installing-building-arduino-sketch-5-microcontroller/
注意

  • 須下載esp專用arduino 1.6.1
  • 板子型號、連接埠、燒錄方式(eptool)皆須重設
  • 若範例連編譯都沒有過,代表下載有問題,重新下載一次arduino似乎是固定問題
  • 範例程式傳進板子後,有時序列埠會沒有顯示wifi資訊,重傳就好(不過似乎後期會一直沒有顯示- -)
  • 網路控制燈如果輸入0還是無法暗下來,代表led埠和,改用帽型led
  • 以上3~5是固定問題大陷阱=~=

2015年5月19日 星期二

arduino-溫濕度感應器/圖案顯示器/顯示溫濕度

溫濕度感應器
硬體


  • arduino板
  • 麵包板
  • 溫濕度感應器DHT11
程式


  • http://ming-shian.blogspot.tw/2014/05/arduino19dht11.html
圖案顯示器
硬體
  • arduino板
  • 麵包板
  • nokia5110顯示器
  • 接腳按照程式接
程式
  • 下載https://github.com/adafruit/Adafruit-GFX-Library
  • 下載https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library
  • 將上面兩個檔案解壓縮放進libraries
  • 從範例中開啟Adafruit-PCD8544-Nokia-5110-LCD-library的pcdtest
顯示溫濕度
硬體
  • arduino板
  • 麵包板
  • nokia5110顯示器
  • 溫濕度感應器DHT11
程式
  • 參考Adafruit-PCD8544-Nokia-5110-LCD-library的pcdtest中,Hello, world!那一段
  • // draw a single pixel以下全部刪除,只留Hello, world!那段
  • 將溫濕度感應.h檔導入,設好接腳define
  • 將print、println的值分別改成temperature =、DHT.temperature、C
  • 同樣方法改濕度
  • print跟println的差別在於有ln則換行
  • 改好後若發現temperature比humidity多一行是因為temperature = 這串超過螢幕範圍自動跳行,刪掉=後的空格就好
程式碼-此為將溫溼度合併在同個畫面,並不將數值反白


/*********************************************************************


This is an example sketch for our Monochrome Nokia 5110 LCD Displays


  Pick one up today in the adafruit shop!
  ------> http://www.adafruit.com/products/338

These displays use SPI to communicate, 4 or 5 pins are required to
interface

Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada  for Adafruit Industries.
BSD license, check license.txt for more information
All text above, and the splash screen must be included in any redistribution
*********************************************************************/

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <dht.h>   

// Software SPI (slower updates, more flexible pin options):
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

// Hardware SPI (faster, but must use certain hardware pins):
// SCK is LCD serial clock (SCLK) - this is pin 13 on Arduino Uno
// MOSI is LCD DIN - this is pin 11 on an Arduino Uno
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
// Adafruit_PCD8544 display = Adafruit_PCD8544(5, 4, 3);
// Note with hardware SPI MISO and SS pins aren't used but will still be read
// and written to during SPI transfer.  Be careful sharing these pins!

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2


#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16

#define dht_dpin 2 //定義訊號要從Pin A0 進來  
  
dht DHT;   

static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
  B00000001, B11000000,
  B00000001, B11000000,
  B00000011, B11100000,
  B11110011, B11100000,
  B11111110, B11111000,
  B01111110, B11111111,
  B00110011, B10011111,
  B00011111, B11111100,
  B00001101, B01110000,
  B00011011, B10100000,
  B00111111, B11100000,
  B00111111, B11110000,
  B01111100, B11110000,
  B01110000, B01110000,
  B00000000, B00110000 };

void setup()   {
  Serial.begin(9600);

  display.begin();
  // init done
  // you can change the contrast around to adapt the display
  // for the best viewing!
  display.setContrast(50);
  display.clearDisplay();   // clears the screen and buffer
}
void loop(){
  //show H&T
  DHT.read11(dht_dpin);
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Humidity = ");
  display.setTextColor(BLACK); 
  display.print(DHT.humidity);
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.println("%"); 
  display.display();
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.println("temperature =");
  display.setTextColor(BLACK); 
  display.print(DHT.temperature);
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.print("C"); 
  display.display();
  delay(2000);
  display.clearDisplay();   // clears the screen and buffer
}

2015年5月17日 星期日

arduino-紅外線接收/控制燈

硬體

  • arduino版
  • 麵包版
  • 紅外線接收器KEYES Infrared receiver module for arduino
  • LED
  • 遙控器
  • 按照圖示連,三個接腳為GND/3.3v(5v不行)/S
程式-讀取數值
#include <IRremote.h>     //記得下載IRremote.h並解壓移到libraries

int RECEIVE_PIN= 3;     //接腳改成自己keyes-S的腳,要選有pwn的
IRrecv irreceiver(RECEIVE_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  irreceiver.enableIRIn();      // Start the receiver
}

void loop() {
  if (irreceiver.decode(&results)) {
    Serial.println(results.value, HEX);     //點開右上序列阜視窗,以十六進位(HEX)顯示頻率。建議去掉HEX!另,此程式若常按按鈕只會顯示一次數值,其他為FFFFFFFF(4294967295),一個按鈕可能出現不同數值,多試幾次就可
    irreceiver.resume();

程式-按鈕控制LED,按數字幾便閃幾次
直觀式
  • 迴圈for
  • switch case


#include <IRremote.h>

int RECEIVE_PIN= 3;
IRrecv irreceiver(RECEIVE_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  irreceiver.enableIRIn();     //以上相同
  pinMode(2,OUTPUT);     //接LED的腳
}

void loop() {
  if (irreceiver.decode(&results)) {
    Serial.println(results.value);
    irreceiver.resume();
    switch(results.value){     //以results.value的值做判斷
    case 16738455:     //當值為16728455(按鈕1)時。值可在序列埠視窗按各按鈕查看。若顯示十六進位則須轉成十進位((所以才說不要HEX嘛> <
      Serial.println('1');     //在序列埠視窗顯示1
      digitalWrite(2,HIGH);
      delay(100);
      digitalWrite(2,LOW);     //亮一次後暗
      break;     //必須加!!case的跑法是從哪裡開始往下跑,而不是單跑一個case,不加的話會繼續跑面下面其他case
    case 16750695:     //按鈕二
    Serial.println('2');
      for(int i=0; i<2; i++){     //設定i=0,當i<2時則跑下面程式,每跑一次i就+1
        digitalWrite(2,HIGH);
        delay(100);
        digitalWrite(2,LOW);
        delay(100);
        }     //亮後熄滅跑兩次->亮滅二次
        break;
    case 16756815:
      Serial.println('3');
      for(int i=0; i<3; i++){
        digitalWrite(2,HIGH);
        delay(100);
        digitalWrite(2,LOW);
        delay(100);
        }
        break;     //亮滅三次
    }
  }
}

變數式
  • 設變數
  • 把for拉出來

#include <IRremote.h>

int RECEIVE_PIN= 3;
IRrecv irreceiver(RECEIVE_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  irreceiver.enableIRIn(); // Start the receiver
  pinMode(2,OUTPUT);
}

void loop() {
  if (irreceiver.decode(&results)) {
    Serial.println(results.value);
    irreceiver.resume();
    int times = 0;
    switch(results.value){
    case 16738455:
      Serial.println('1');
      times = 1;
      break;
    case 16750695:
      Serial.println('2');
        times = 2;
        break;
    case 16756815:
      Serial.println('3');
        times = 3;
        break;
    case 16724175:
      Serial.println('4');
        times = 4;
        break;
    case 16718055:
      Serial.println('5');
        times = 5;
        break;
    case 16743045:
      Serial.println('6');
        times = 6;
        break;
    case 16716015:
      Serial.println('7');
        times = 7;
        break;
    case 16726215:
      Serial.println('8');
        times = 8;
        break;
    case 16734885:
      Serial.println('9');
        times = 9;
        break;
    }
    for (int i =0; i<times; i++){     //設變數times,以times數值為迴圈重複次數
      digitalWrite(2,HIGH);
      delay(100);
      digitalWrite(2,LOW);
      delay(200);
    }
  }
}

函數式
#include <IRremote.h>

int RECEIVE_PIN= 3;
IRrecv irreceiver(RECEIVE_PIN);
decode_results results;
void setup()
{
  Serial.begin(9600);
  irreceiver.enableIRIn(); // Start the receiver
  pinMode(2,OUTPUT);
}

void times(int x){
for (int i = 0;i<x;i++){
  digitalWrite(2,HIGH);
  delay(100);
  digitalWrite(2,LOW);
  delay(200);
    }
}

void loop() {
  if (irreceiver.decode(&results)) {
    Serial.println(results.value);
    irreceiver.resume();
    switch(results.value){
    case 16738455:
      Serial.println('1');
      times(1);
      break;
    case 16750695:
      Serial.println('2');
      times(2);
      break;
    case 16756815:
      Serial.println('3');
      times(3);
      break;
    case 16724175:
      Serial.println('4');
      times(4);
      break;
    case 16718055:
      Serial.println('5');
      times(5);
      break;
    case 16743045:
      Serial.println('6');
      times(6);
      break;
    case 16716015:
      Serial.println('7');
      times(7);
      break;
    case 16726215:
      Serial.println('8');
      times(8);
      break;
    case 16734885:
      Serial.println('9');
      times(9);
      break;
    }
  }
}

判斷遙控器種類等(引用自參考網站最後一個)

#include <IRremote.h>                    // 引用 IRRemote 函式庫
const int irReceiverPin = 3;            
IRrecv irrecv(irReceiverPin);            // 定義 IRrecv 物件來接收紅外線訊號
decode_results results;                  // 解碼結果將放在 decode_results 結構的 result 變數裏
void setup()
{
  Serial.begin(9600);                     // 開啟 Serial port, 通訊速率為 9600 bps
  irrecv.enableIRIn();                   // 啟動紅外線解碼
}
// 顯示紅外線協定種類
void showIRProtocol(decode_results *results)
{
  Serial.print("Protocol: ");
 
  // 判斷紅外線協定種類
  switch(results->decode_type) {     //從results裡取出decode_type的值
   case NEC:
     Serial.print("NEC");
     break;
   case SONY:
     Serial.print("SONY");
     break;
   case RC5:
     Serial.print("RC5");
     break;
   case RC6:
     Serial.print("RC6");
     break;
   default:
     Serial.print("Unknown encoding");
  }

  // 把紅外線編碼印到 Serial port
  Serial.print(", irCode: ");          
  Serial.print(results->value, HEX);    // 紅外線編碼
  Serial.print(",  bits: ");        
  Serial.println(results->bits);        // 紅外線編碼位元數  
}

void loop()
{
  if (irrecv.decode(&results)) {         // 解碼成功,收到一組紅外線訊號
    showIRProtocol(&results);            // 顯示紅外線協定種類
    irrecv.resume();                     // 繼續收下一組紅外線訊號      
  }
}

參考網站
http://coopermaa2nd.blogspot.tw/2011/02/arduino-serial-led.html     switch case用法
http://ming-shian.blogspot.tw/2013/09/arduino.html
http://www.arduino.cc/en/Reference/FunctionDeclaration     函數設置
http://coopermaa2nd.blogspot.tw/2011/03/12.html     判斷遙控器的編碼來源

2015年5月2日 星期六

資料庫編輯-notepad++ 2015.05.03

將資料格式化

  • 下載notepad++,範例文件(見紫菜gmail文件)右鍵以notepad++開啟
  • 右下INS代表編輯模式,big5是編碼
  • 選擇編碼->轉換至utf8(不是編譯),要有BOM的(無BOM是用於特殊情況)
  • 善用取代、alt+左鍵(直向選取)配合excel
  • insert into classtab#資料表名#(classname,g1,g2,g3,g4,g5,g6) values('國小',23,37,33,33,34,39);
匯入
  • 建立資料庫school,10欄
  • 欄名勿用中文、英文大寫、底線
  • 第一行A_I打勾(自動新增),索引選擇PRIMARY(排序)
  • 後面依情況選擇型態VARCHAR或INT,建立資料表
  • 選擇SQL,複製改好的範例文件,貼上
搜尋
  • 雖然指令無關大小寫,但是欄名有關,故以下school_name及tt,total須小寫(算了乖乖重打小寫吧,乖)
  • *代表所有,%代表其他字
  • 列出華山國小資訊:select * from classtab where school_name = '華山國小'
  • 列出小港區學校資訊:select * from classtab where school_name like '小港區%'
  • 列出名字中有山的資訊:select * from classtab where school_name like '%%'
  • 列出小港區及三民區資訊:select * from classtab where school_name like '小港區%'or school_name like'三民區%'
  • 列出新生數大於150人的學校:select * from classtab where g1 > '150'
  • 升冪排列:select * from classtab where g1 > '150' order by g1 asc
  • 高雄新生總和:select sum(g1) from classtab;
  • 降冪排列:select * from classtab where g1 > '150' order by g1 desc
  • 年級總人數和:select sum(g1),sum(g2),sum(g3),sum(g4),sum(g5),sum(g6) from classtab;
  • 高雄小學生總和:select sum(g1+g2+g3+g4+g5+g6) from classtab;
  • 三民區新生總和:select sum(g1) from classtab where school_name like '三民區%';
  • 顯示三民區,三民區新生總和:select '三民區', sum(g1) from classtab where school_name like '三民區%';
  • 高雄各小學,各小學新生人數:select school_name,g1+g2+g3+g4+g5+g6 from classtab;
  • select school_name,g1+g2+g3+g4+g5+g6 from classtab order by asc;
  • 將各校總和命名為tt並顯示:select school_name,g1+g2+g3+g4+g5+g6 as tt from classtab order by tt desc;
  • 把memo1改成total
  • 將各校總人數放進update:update classtab set total = g1+g2+g3+g4+g5+g6     #已有total欄,所以是用update不是insert
  • 取出學校左三個字:select school_name,left(school_name,3) from classltab
  • 列出區字在學校名第幾個字:SELECT school_name, LEFT( school_name, 3 ) , POSITION( '區'
    IN school_name ) 
    FROM classtab     #position為函數,和括號間不能有空格
  • 將學校名取到區字(列出各區):SELECT school_name, LEFT(school_name, position('區' in school_name)) from classtab;
  • 若是只要校名,則以lehgth(總字長-position'區')

2015年4月28日 星期二

android程式設計(1)-eclipse

開發環境
  • 下載Java Delopment KIT(:C\,JDK)、Eclipse(:D\)、Android Delopment Tools(ADT,可能無法下載,可透過Eclipse下載)、Android Software Development  Kit(:C\,Android SDK)
  • SDK無法安裝,打開Windows命令提示字元輸入java -version及javac -version,顯示找不到
  • 我的電腦->右鍵->內容->進階系統設定->環境變數
  • 在系統變數新增JAVA_HOME,路徑為JDK安裝路徑(例:C:\Program Files\Java\jdk1.7.0_79)
  • 系統變數path(注意不是上面的)編輯,新增%JAVA_HOME%\bin;(注意以分號隔開,前面那串只讀取JAVA_HOME變數,而執行檔在bin資料夾)
  • Windows命令提示字元輸入javac -version,可正常顯示
  • 打開SDK,顯示安裝套件,最上面部份選擇platform-tools及build-tools最新版
  • 第二部份不動
  • 第三部份為支援的Android版本,建議4以上不選
  • 最下的部份為google資料庫,billing及Web、Emulator
  • 漫長的下載.......QAQ

2015年4月25日 星期六

linux-CentOS 6.6 64 網頁 2015.04.26

主機

  • vmware建立虛擬主機,安裝CentOS 6.6,第一個skip,選擇basic安裝
  • usersdd UserName     #無法事先建立root外的使用者,所以下指令建立
  • passwd UserName     #設密碼
  • 以pietty登入 d,su 可用
  • sudo yum update 失敗,表示無法用update
  • 回到vmware的root
  • visudo -f /etc/sudoers (root專用指令。sudo vi 亦可,但保存退出需加!)
  • 移到最末頁,找到一行root all+(all) all,打yyp(不會顯示)
  • 出現的第二行,輸入i,進入編輯模式,將root改成UserName
  • 回pietty,重新sudo yum update,成功
安裝
  • 安裝httrpd httpd-toold,php*,mysql*
  • chkconfig 有0~6模式,記3跟6
  • chkconfig --help
  • chkconfig --level 3456 mysqld on,同樣做法設定httpd
  • /etc/init.d/mysqld start 同樣做法啟動httpd
  • service httpd start 效果同上
  • mysqladmin -u root password '密碼'     #更改mysql密碼
連線
  • vi /etc/sysconfig/iptables (不適用firewall,此版用iptables,只有root可讀)
  • 將-A第四行yyp,把22改成80     #開放80port
  • service iptables restart 此時可連
  • echo "<?php phpinfo(); php?>" > /var/www/html/test.php 
  • 或 vi /var/www/html/test.php,再sudo vi 輸入<>那串
  • 連線ip/test.php
建立網頁
  • cd  /etc/httpd/conf
  •  vi httpd.conf移到最末(shift+g)
  • #NameVirtualHost那行前打x(刪除#)
  • 反白#<VirtualHost *:80>到#</VirtualHost>(複製)
  • 移到最後空白行按右鍵(貼上)
  • 將複製的那段全部在開頭按x,去掉#
    • ServerAdmin:管理者帳號
    • DocumentRoot:/var/www/html(讀取位置,不會自動建資料夾,因此保存後建立資料夾再重啟服務)
    • ServerName: 網址,www後隨意輸入
    • ErrorLog和CustomLog為錯誤記錄及訪客連線記錄,輸入logs/隨意,Custom後加 common,建議以網址區分
  • 重複上述步驟,網址改www.myadmin......,讀取資料夾改/home/webs/myadmin
  • 下載phpmyadmin,解壓改名myadmin移到/home/webs下
  • chown -R apache:apache myadmin     #更改擁有者
  • 連線到兩個網頁,失敗
  • 關selinux
  • 重啟!!重啟!!重啟!!很重要- -#
  • 以管理員身分開啟筆記本,開啟C:\Windows\System32\drivers\etc,顯示全部檔案中的hosts
  • 最後補上 ip 網址(記得關防毒)
  • 用windows命令提是自原ping網址試試,此時可以連上

2015年4月19日 星期日

linux-CentOS 64 資料庫 2015.04.19

每次安裝前,建議先下指令 yum update
檢查
  •  rpm -qa |grep mysql
安裝mysql
  • yum search mysql     #mariadb是mysql開發團隊所開發
  • yum install mariadb*     #*代表mariadb開頭所有程式
  • systemctl start mariadb.service
  • systemctl enable mariadb.service
使用mysql
  •  mysql -u root -p     #u=user,此處的root和linux的root不同,p是密碼,直接enter即可
  • #-u=user,-p=password
  • \h     #指令列表
  • show databases;     #列出資料庫
  • use 資料庫名
  • show tables     #列出資料庫內表格
  • select * from user;     #顯示user內所有表格
  • select host,user,password from user;     #只看host,user,password三行
  • exit     #退出
  • mysqladmin -u root -p password     #更改密碼
  • 先enter,然後輸入新密碼,再次確認
設定連線資料庫
  • 下載phpadmin
  • 以filezilla連線到主機22port,將phpadmin傳送到家目錄,建議以root登錄
  • #若沒有設定網路連到家目錄下,則移到/var/www/html
  • yum install unzip
  • unzip php(tab)
  • mv php(tab) /home/www     #移到此處是因為上次將網路讀取資料夾改到這,沒有則移到/var/www/html
  • mv php(tab) phpMyAdmin     #方便連線輸入網址
  • yum install php-*     #發現錯誤,有兩個衝突
  • yum install php-* --skip-broken     #留下nd的
  • systemctl restart httpd.service     #此時重新連線ip/test.php會發現網頁資訊變多
  • 連線ip/phpMyAdmin     #此時依舊不能登入,原因是selinux
  • vi /etc/selinux/config,將en啥的改成disable
  • reboot
  • 重新連線,此時可以登入
  • 進入phpMyAdmin資料夾
  • cp con(tab) con(tab)去掉中間sample成config.inc.php
  • vi config.inc.php,將lowfish後''中間隨意輸入     #加密
架設網站
  • 下載xoops,同phpMyAdmin解壓縮、移動、改檔名
  • 網頁開啟xoops/htdocs依序完成
  • chmod 7777 檔名(偷懶可用chmod 7777 -R upload,目前沒發現異狀
  • chown apache:apache -R xoops_data     #將xoops_data開頭文件全部更改擁有者(-R為迴圈,重覆改)
  • chown apache:apache -R htdocs     #更改擁有者(htdocs後面不要有/((上一步或許能省略?
......xoops好難用QAQQQQQQQQ

2015年4月12日 星期日

linux-CentOS 64 網頁 2015.04.12


開始
  • 裝linux CentOS minimal     #最小安裝,無法使用ifconfig,建議安裝時網路設定先看ip
  • yum update
  • yum install net-tools     #此時可以用ifconfig,連接pietty
  • yum install httpd httpd-tools      #安裝apache
  • systemctl start httpd.service     #開啟
  • systemctl enable httpd.service     #設置開機時自動運行
防火牆
  • firewall-cmd --permanent --add-service=http    #防火牆打洞,允許http服務(不建議直接關閉) --zone=public作用??
  • firewall-cmd --reload     #重啟防火牆服務
顯示phpinfo
  • 安裝php*
  • echo "<?php phpinfo(); php?>" > /var/www/html/test.php 或者                                         vi /var/www/html/test.php     #建立phpinfo網頁
  • chown apache:apache test.php
  • 瀏覽器輸入ip/test.php,此時可以看到php資訊頁
程式管理員
  • ps -aux     #列出正在運行的事及程式
  • ps -aux |grep keyword    #grep過濾關鍵字,例如httpd
更改網頁讀取資料夾
  • 家目錄底下建立www資料夾
  • 將var/www/html複製到/home/www
  • vi /etc/httpd/conf/httpd.conf 
  • /html     #/keyword搜尋關鍵字
  • 把 /var/www/html 改成 /home/www     #建議先複製一行,並把其中一行前面打#加一個空格,避免修改失敗不會復原。要改兩個地方
更換擁有者
  • chown 使用者:群組 檔名