php 學習筆記之搭建開發環境(mac版)

雪之夢技術驛站發表於2019-05-19

Mac 系統預設整合了很多開發工具,其中就包括 php 所需要的一些軟體工具.

下面我們將搭建最簡單的 php 開發環境,每一步都會驗證上一步的操作結構,請一步一步跟我一起搭建吧!

web 伺服器之 apache

apache 是一款 web 伺服器,用於執行 php 檔案,除了 apache 外也可以是 nginx 伺服器.

預設情況下 mac 已經預裝了 apach 服務,自然不用 nginx 伺服器了.

現在什麼也沒有配置的情況下,直接啟動 apache 伺服器看一下能否正常執行.

$ sudo apachectl start

php-setup-environment-mac-apache-start.png

常用命令

  • 檢視 apache 版本

語法: apachectl -v

示例:

$ apachectl -v
Server version: Apache/2.4.34 (Unix)
Server built:   Feb 22 2019 19:30:04
  • 啟動 apache 服務

語法: sudo apachectl start

示例:

$ sudo apachectl start
Password:
  • 停止 apache 服務

語法: sudo apachectl stop

示例:

$ sudo apachectl stop
  • 重啟 apache 服務

語法: sudo apachectl restart

示例:

$ sudo apachectl restart

安裝路徑

apache 預設安裝於 /private/etc/apache2 目錄,屬於系統隱藏目錄,可以在終端中直接進入也可以在訪達中直接前往資料夾.

示例:

$ tree /private/etc/apache2
/private/etc/apache2
├── extra
│   ├── httpd-autoindex.conf
│   ├── httpd-autoindex.conf~previous
│   ├── httpd-dav.conf
│   ├── httpd-dav.conf~previous
│   ├── httpd-default.conf
├── httpd.conf
├── httpd.conf.pre-update
├── httpd.conf~previous
├── magic
├── mime.types
├── original
│   ├── extra
│   │   ├── httpd-autoindex.conf
│   │   ├── httpd-dav.conf
│   │   ├── httpd-default.conf
│   │   ├── httpd-vhosts.conf
│   │   └── proxy-html.conf
│   └── httpd.conf
├── other
│   └── php7.conf
└── users
    └── Guest.conf

5 directories, 43 files

如果想要修改專案部署路徑以及伺服器埠等自定義配置,可開啟 /private/etc/apache2/httpd.conf 檔案進行編輯,如果許可權不足,要麼提升許可權要麼複製到別處修改好再替換掉原來的配置檔案.

配置檔案一旦修改,請一定要重啟伺服器,不然並不會生效!

vim 搜尋檔案內容時臨時高亮設定: :set hlsearch ,取消高亮設定: :set nohlsearch .

  • 修改專案部署路徑

DocumentRoot : 預設部署路徑於 /Library/WebServer/Documents

終端輸入 vim 命令查詢並編輯目標節點.

$ vim /private/etc/apache2/httpd.conf

輸入 vim /private/etc/apache2/httpd.conf 進入命令列模式,輸入 :/DocumentRoot 從頭搜尋檔案內容,緊接著輸入 n 表示查詢下一項匹配字元,N 表示查詢上一項匹配內容.

php-setup-environment-mac-apache-DocumentRoot.png

如果不熟悉 vim 語法也可以選擇熟悉的編輯器開啟 httpd.conf 配置檔案進行修改配置.

  • 修改專案部署埠

Listen : 預設監聽埠 80

如果埠衝突的話,可以修改成其他埠,80 埠的好處在於可以直接訪問伺服器地址而不用顯示帶上埠號.

# 等價於 http://localhost:80
http://localhost 

# 等價於 http://127.0.0.1:80
http://127.0.0.1

php-setup-environment-mac-apache-listen-port.png

部署路徑

預設情況下,apache 的部署路徑位於 /Library/WebServer/Documents ,除非你更改了 httpd.conf#DocumentRoot 的節點配置.

$ tree /Library/WebServer/Documents
/Library/WebServer/Documents
├── PoweredByMacOSX.gif
├── PoweredByMacOSXLarge.gif
├── index.html.en
└── index.html.en~orig

0 directories, 4 files

當然你可以通過訪達直接前往 /Library/WebServer/Documents 目錄或者 open /Library/WebServer/Documents 直接呼叫內建程式開啟目錄.

php-setup-environment-mac-apache-Documents.png

如果非要一步一步找到部署路徑,開啟 訪達 後選擇左側最下方的本地光碟(個人使用者名稱稱),然後依次選擇 Machintosh HD > 資源庫 (Library) > WebServer > Documents

世界上最好的語言之 php

php 在行業內贏得"世界上最好的語言"稱號,自嘲為"拍簧片".不管怎樣,既然我們決定 pai(拍)huang(簧)pian(片) ,那總要配置一下 php 的基本環境吧!

Mac 系統一如既往內建了 php 環境,不用我們費心去安裝 php 了,現在看一下 php 的基本資訊吧!

$ php -version
PHP 7.1.23 (cli) (built: Feb 22 2019 22:08:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

php 是一種服務端指令碼解釋性語言,依賴於 web 伺服器進行解析,所以 php 想要正常工作離不開上一步配置的 apache 伺服器.

還記得 apache 配置檔案的位置嗎?

apache 配置檔案路徑 : /private/etc/apache2/httpd.conf

php-setup-environment-mac-apache-integration-php.png

開啟 httpd.conf 配置檔案並搜尋 LoadModule php 字串,將前面的 # 去掉即可引入 php 支援,配置檔案修改後記得重啟才能生效喲!

是時候展示真正的技術了,現在萬事俱備只待測試 php 到底有沒有配置成功?!

在專案部署根目錄下新建 info.php 測試檔案,啟動伺服器後訪問
http://localhost/info.php
如果能正常列印出 php 相關資訊,那就證明 phpapache 整合無誤,否則可能是某一步配置有誤!

<?php
phpinfo();
?>

php-setup-environment-mac-apache-php-start.png

持久化儲存之 mysql

Mac 系統並沒有預設安裝 mysql 服務,因此我們需要手動安裝 mysql .

一般來說,我們談到 mysql 資料庫指的是 mysql 的服務端,作為生產環境服務端足夠了並不需要客戶端.

但是,日常開發中如果沒有客戶端我們很難直觀管理資料,所以一般來說,我們還會安裝 mysql 客戶端,當然一般是各種功能強大的圖形化工具.

mysql 服務端

下載連結: macOS 10.14 (x86, 64-bit), DMG Archive

php-setup-environment-mac-mysql-server-download.png

和正常的軟體安裝一樣,將安裝檔案移動到應用裡即可完成,比 Windows 的下一步下一步安裝還要方便快捷!

安裝完成後,可以在系統偏好設定中找到 MySQL 圖示,檢視管理 mysql 服務端.

php-setup-environment-mac-mysql-server-icon.png

點選 MySQL 圖示,可以進行簡單的設定以及重啟服務等操作.

php-setup-environment-mac-mysql-server-running.png

但是如果想要在終端中無痛連線上 mysql 服務端,那麼還需要一步設定軟連結,類似於 Windows 的快捷方式.

$ sudo ln -fs /usr/local/mysql/bin/mysql /usr/local/bin/mysql

現在我們就可以在終端內愉快的連線上 mysql 服務端了呢!

# 登入 `mysql` 服務端
$ mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 檢視當前資料庫列表
mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| security-plus       |
| sys                 |
| test                |
+---------------------+
6 rows in set (0.00 sec)

# 退出當前資料庫會話
mysql> exit
Bye
$ 
  • 檢視 mysql 服務端版本

語法: mysql --version

示例:

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.24, for macos10.14 (x86_64) using  EditLine wrapper
  • 檢視 mysql 服務端狀態

語法: sudo /usr/local/mysql/support-files/mysql.server status

示例:

$ sudo /usr/local/mysql/support-files/mysql.server status
 SUCCESS! MySQL running (73088)
  • 啟動 mysql 服務端

語法: sudo /usr/local/mysql/support-files/mysql.server start

示例:

$ sudo /usr/local/mysql/support-files/mysql.server start
Starting MySQL
. SUCCESS! 
  • 停止 mysql 服務端

語法: sudo /usr/local/mysql/support-files/mysql.server stop

示例:

$ sudo /usr/local/mysql/support-files/mysql.server stop
Shutting down MySQL
.. SUCCESS! 
  • 重啟 mysql 服務端

語法: sudo /usr/local/mysql/support-files/mysql.server restart

示例:

$ sudo /usr/local/mysql/support-files/mysql.server restart
Shutting down MySQL
. SUCCESS! 
Starting MySQL
. SUCCESS! 

mysql 客戶端

如果說生產環境沒有 mysql 的圖形化工具也就罷了,但是如果日常開發時也不沒有圖形化工具的話,那就真的太不方便了.

這裡推薦兩個客戶端工具,一個是人畜無害的 Sequel Pro,另一個則是 php 專屬的 phpMyAdmin.

  • BS 架構的 phpMyAdmin

下載地址 : phpMyAdmin

phpMyAdmin 是一款 web 版資料款管理軟體,可以在瀏覽器中線上訪問,像訪問你的網站一樣訪問資料庫.

php-setup-environment-mac-mysql-client-phpMyAdmin.png

下載完成後解壓並重新命名為 phpMyAdmin,然後移動到 apache 的專案部署路徑下,如果沒有更改過預設的部署路徑,那麼應該是 /Library/WebServer/Documents 目錄.

現在部署路徑下不僅有個 info.php 檔案還有 phpMyAdmin 資料夾.

# 僅僅顯示兩級檔案目錄
$ tree -L 2
.
├── PoweredByMacOSX.gif
├── PoweredByMacOSXLarge.gif
├── index.html.en
├── index.html.en~orig
├── info.php
└── phpMyAdmin
    ├── CODE_OF_CONDUCT.md
    ├── CONTRIBUTING.md
    ├── export.php
    ├── favicon.ico
    ├── gis_data_editor.php
    ├── import.php
    ├── import_status.php
    ├── index.php
    ├── view_operations.php
    └── yarn.lock

11 directories, 108 files

移動完成後先複製一份 config.sample.inc.php 檔案並重新命名為 config.inc.php 檔案.

執行 vim /Library/WebServer/Documents/phpMyAdmin/config.inc.php 搜尋並編輯 host 節點內容,將 localhost 更改成 127.0.0.1 .

示例:

# 修改前
$cfg['Servers'][$i]['host'] = 'localhost';

# 修改後: 將 `localhost` 更改成 `127.0.0.1`
$cfg['Servers'][$i]['host'] = '127.0.0.1';

php-setup-environment-mac-mysql-client-phpMyAdmin-config.png

重啟 apache 服務,訪問 http://localhost/phpMyAdmin/ 開始登陸資料庫吧!

php-setup-environment-mac-mysql-client-phpMyAdmin-login.png

輸入 mysql 的使用者名稱和密碼登入成功後就能管理本地資料庫了.

php-setup-environment-mac-mysql-client-phpMyAdmin-database.png

  • CS 架構的 Sequel Pro

下載地址 : v1.1.2 OS X 10.6 or Higher

Sequel Pro 是簡單易用的資料庫管理工具,與上述的 phpMyAdmin 不同之處在於並不依賴 php 環境,可以獨立安裝部署.

php-setup-environment-mac-mysql-client-SequelPro.png

安裝完成後輸入資料庫連線資訊連線到本地資料庫,參考資訊如下.

php-setup-environment-mac-mysql-client-SequelPro-config.png

點選連線(Connect) 連線到本地伺服器,由於剛才並沒有選擇資料庫,因此登陸後需要選定資料庫,這裡根據實際情況選擇即可.

php-setup-environment-mac-mysql-client-SequelPro-database.png

php 整合 mysql

如果沒有資料庫提供持久化儲存能力,那麼 php 只能臨時執行而沒有記憶功能,所以想要記住網站大量資訊自然離不開資料庫.

準備資料

為了接下來演示 php 整合 mysql 資料庫,現在先建立一個測試資料庫並插入一些測試資料.

下面主要是通過終端方式進行操作,小夥伴們也可以使用上述安裝的圖形化工具進行視覺化編輯.

  • 連線到本地伺服器

語法 : mysql -u <username> -p

示例:

# 連線到本地資料庫,使用者名稱 `root`,密碼自定義
$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 109
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  • 列出當前資料庫列表

語法 : show databases

示例:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| security-plus      |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
  • 建立測試資料庫

語法 : create database <databaseName>

示例:

# 建立 `test` 資料庫並指定編碼格式為 `utf8`
mysql> create database IF NOT EXISTS test default charset utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

# 再次查詢當前資料庫列表,新增 `test` 資料庫
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| security-plus      |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)
  • 列出當前資料表列表

語法 : show tables

示例:

# 使用 `test` 測試資料庫
mysql> use test;
Database changed

# 列出當前全部資料表
mysql> show tables;
Empty set (0.00 sec)
  • 建立測試資料表

語法 : create tabel <tableName> (<fieldName> <type>))

# 建立 `user` 使用者表
mysql> CREATE TABLE `test`.`user` (
       `id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '使用者 id',
       `name` VARCHAR(45) NOT NULL DEFAULT '' COMMENT '姓名',
       PRIMARY KEY (`id`),
       UNIQUE INDEX `id_UNIQUE` (`id` ASC))
     ENGINE = InnoDB
     DEFAULT CHARACTER SET = utf8
     COMMENT = '使用者表';
Query OK, 0 rows affected (0.01 sec)

# 再次列出當前資料表列表
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0.00 sec)
  • 檢視資料表結構

語法 : desc <tableName>

示例:

mysql> desc user;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| id    | bigint(11) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(45)         | NO   |     |         |                |
+-------+---------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
  • 檢視資料表建立語句

語法 : show create table <tableName>

示例:

mysql> show create table user \G
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '使用者 id',
  `name` varchar(45) NOT NULL DEFAULT '' COMMENT '姓名',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='使用者表'
1 row in set (0.00 sec)
  • 查詢資料

語法 : select [fields] from tableName [where condition] [limit N][ offset M]

示例:

mysql> select id,name from user;
Empty set (0.00 sec)
  • 插入資料

語法 : insert into <tableName> ([fields]) VALUES ([values])

示例:

mysql> INSERT INTO `test`.`user` (`name`) VALUES ('snowdreams1006');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO `test`.`user` (`name`) VALUES ('雪之夢技術驛站');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO `test`.`user` (`name`) VALUES ('測試使用者姓名');
Query OK, 1 row affected (0.00 sec)

mysql> select id,name from user;
+----+-----------------------+
| id | name                  |
+----+-----------------------+
|  1 | snowdreams1006        |
|  2 | 雪之夢技術驛站        |
|  3 | 測試使用者姓名          |
+----+-----------------------+
3 rows in set (0.00 sec)
  • 退出資料庫

語法 : exit

示例:

mysql> exit
Bye
$ 
  • 匯出資料

語法 : mysqldump -u <username> -p <databaseName> > exportName.sql

備份資料用到的是 mysqldump 工具,預設情況下該命令位於 /usr/local/mysql/bin 目錄下,正常情況下需要指定該路徑才能呼叫 mysqldump 命令.

$ tree /usr/local/mysql/bin
/usr/local/mysql/bin
├── innochecksum
├── lz4_decompress
├── my_print_defaults
├── myisam_ftdump
├── myisamchk
├── mysql
├── mysql_client_test_embedded
├── mysql_config
├── mysqlbinlog
├── mysqlcheck
├── mysqld
├── mysqld-debug
├── mysqld_multi
├── mysqld_safe
├── mysqldump
├── resolveip
└── zlib_decompress

0 directories, 38 files

所以,應該是如下命令才能呼叫 mysqldump 命令.

$ /usr/local/mysql/bin/mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.24, for macos10.14 (x86_64)

不過這也太長了吧,肯定不是很不變,一勞永逸的方法是將 /usr/local/mysql/bin 加入到環境變數中就不用新增額外的路徑資訊了.

還記得 mysql 服務端剛安裝完畢,我們想要通過終端連線到本地資料庫伺服器時設定了 mysql 的軟連結,所以才能直接使用 mysql -u root -p 進行登入.

mac軟連結方式相當於 windows 系統的快捷方式,只針對具體命令,現在需要 mysqldump 命令,繼續使用軟連結還要新增類似的快捷方式.

$ sudo ln -fs /usr/local/mysql/bin/mysql /usr/local/bin/mysql
$ sudo ln -fs /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump

實測可用,但是這並不是優雅的操作方式,/usr/local/mysql/bin/ 目錄下那麼多命令,下次需要用到其他命令豈不是要設定很多軟連結?

$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.24, for macos10.14 (x86_64)

所以,現在我們考慮將 /usr/local/mysql/bin 加入到系統環境變數中,這樣一來就能一勞永逸不用頻繁設定軟連結了!

php-setup-environment-mac-mysql-path.png

# mysql
export PATH=$PATH:/usr/local/mysql/bin

設定完畢後下次重啟電腦就會生效,或者執行下述命令立即生效.

$ source ~/.bash_profile

為了測試環境變數是否生效,我們先刪除原來的軟連結.

$ rm -rf /usr/local/bin/mysql
$ rm -rf /usr/local/bin/mysqldump

依然能夠正常呼叫 mysql 相關命令.

# `mysql` 版本資訊
$ mysql --version
mysql  Ver 14.14 Distrib 5.7.24, for macos10.14 (x86_64) using  EditLine wrapper

# `mysqldump` 版本資訊
$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.24, for macos10.14 (x86_64)

示例:

$ mysqldump -u root -p  test > database_test.sql;
Enter password: 
$

注意 : mysqldumpmysql 相互獨立的命令列程式,並不是在 mysql 會話中執行的 sql.
檢視當前備份檔案內容:

# 備份檔案位於當前目錄
$ cat $(pwd)/database_test.sql

備份 sql 檔案內容,可以直接複製執行.

-- MySQL dump 10.13  Distrib 5.7.24, for macos10.14 (x86_64)
--
-- Host: localhost    Database: test
-- ------------------------------------------------------
-- Server version   5.7.24

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `user`
--

DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '使用者 id',
  `name` varchar(45) NOT NULL DEFAULT '' COMMENT '姓名',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='使用者表';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `user`
--

LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES (1,'snowdreams1006'),(2,'雪之夢技術驛站'),(3,'測試使用者姓名');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2019-05-19 12:49:35
  • 匯入資料

語法 : source <mysqldump.sql>

示例:

# 建立 `test_import` 資料庫
mysql> create database test_import;

# 使用 `test_import` 資料庫
mysql> use test_import;

# 匯入 `database_test.sql` 檔案
mysql> source /Users/sunpo/Documents/workspace/snowdreams1006.github.io/database_test.sql
  • 刪除資料庫

語法 : drop database <databaseName>

示例:

mysql> drop database test_import;
Query OK, 1 row affected (0.01 sec)

程式設計連線

如果沒有更改過專案的部署路徑,那麼我們之前有個測試 php 環境的檔案,即 /Library/WebServer/Documents/info.php ,現在我們繼續編寫該檔案,通過編碼的方式連線到 mysql 資料庫.

<?php

$username="root";
$userpass="root";
$dbhost="127.0.0.1";
$dbdatabase="test";

// 連線到本地伺服器
$db=new mysqli($dbhost,$username,$userpass,$dbdatabase);
$db->set_charset("utf8");
if(mysqli_connect_error()){
    echo "連線失敗: " . mysqli_connect_error();
    exit;
}

# 查詢使用者列表
$result = $db->query("SELECT id,name FROM user");
if ($result->num_rows > 0) {
    // 輸出資料
    while($row = $result->fetch_assoc()) {
        echo var_dump($row). "<br>";
    }
} 

# 關閉資料庫連線
$db->close();

phpinfo();

?>

現在再次啟動 apache 伺服器,訪問 http://localhost/info.php 測試成功!

php-setup-environment-mac-php-mysql-connected.png

環境搭建要點總結

apache 服務預設已安裝,啟動伺服器後,在瀏覽器中訪問 http://localhost/ 會顯示It works!,表明 apache 能正常使用.

  • 檢視 apache 伺服器版本 : apachectl -v
  • 啟動 apache 伺服器 : sudo apachectl start
  • 停止 apache 伺服器 : sudo apachectl stop
  • 重啟 apache 伺服器 : sudo apachectl restart
  • apache 伺服器安裝路徑 : /private/etc/apache2
  • apache 伺服器部署路徑 : /Library/WebServer/Documents

php 服務預設已安裝,整合到 apache 伺服器只需要在 /private/etc/apache2/httpd.conf 配置檔案中啟用 LoadModule php7_module libexec/apache2/libphp7.so 模組即可,重啟 apache 伺服器即可支援 php 環境.

  • 檢視 php 版本資訊 : php -version
  • php 預設配置檔案路徑 : /private/etc/php.ini.default

mysql 資料庫預設沒有安裝,需要手動前往 https://www.mysql.com/downloads/ 官網進行下載安裝.

如果需要在終端命令列內訪問 mysql 服務端,最好將 mysql 的安裝路徑新增到系統環境中,或者新增軟連結也可以.

  • mysql 安裝路徑 : /usr/local/mysql
  • 系統環境變數路徑 : ~/.bash_profile
  • mysql 二進位制檔案新增到系統環境變數 : export PATH=$PATH:/usr/local/mysql/bin
  • 重新整理系統環境變數配置 : source ~/.bash_profile
  • mysql 命令新增軟連結 : sudo ln -fs /usr/local/mysql/bin/mysql /usr/local/bin/mysql
  • 檢視 mysql 版本資訊 : mysql --version
  • 檢視 mysql 伺服器狀態 : mysql.server status
  • 啟動 mysql 伺服器 : mysql.server start
  • 停止 mysql 伺服器 : mysql.server stop
  • 重啟 mysql 伺服器 : mysql.server restart
  • 登入 mysql 伺服器 : mysql -u root -p
  • 退出 mysql 伺服器 : exit

最後,php 不僅僅可以程式導向也可以物件導向,雖然是拍簧片,但真的很強大,魅力不小呢!

相關文章