[WSL] 如何在 Ubuntu 24.04 LTS 上安裝 PHP
目錄
〈1〉安裝 Ubuntu 基礎套件
步驟 1: 加入 ondrej/php PPA,為 Ubuntu 提供不同的 PHP 版本(5.6 ~ 8.2)
sudo add-apt-repository ppa:ondrej/php
步驟 2: 升級 Ubuntu
sudo apt update
步驟 3: 這些工具和軟體包覆蓋了從網路管理、安全、數據處理到系統監控的多種需求,對於開發者或系統管理員來說,這些都是非常實用的工具
sudo apt -y install curl network-manager unzip net-tools libnss3-tools jq xdg-utils openssl ca-certificates xsel htop
- ● -y 參數:表示自動回答 "yes" 以安裝所有必要的軟體包,而不提示使用者確認
- ● curl:用於從命令行介面進行數據傳輸的工具,支持多種協議(如 HTTP、FTP 等)
- ● network-manager:用於管理網路連接的工具,常用於桌面環境
- ● unzip:用於解壓 ZIP 壓縮檔案的工具
- ● net-tools:包含了一組用於網路配置和排除網路故障的工具,如 ifconfig、netstat 等
- ● libnss3-tools:包含一些網絡安全服務(NSS)工具,用於管理憑證、加密和安全協議
- ● jq:用於處理 JSON 資料的命令行工具
- ● xdg-utils:包含一組與桌面環境交互的工具,如打開 URL、查找應用程式等
- ● openssl:用於實現安全通信的工具和庫,支持多種加密算法和協議
- ● ca-certificates:包含了一組可信任的根憑證,用於驗證 SSL/TLS 連接
- ● xsel:用於在 X Window 系統中訪問剪貼簿的工具
- ● htop:一個互動式的進程查看工具,比 top 提供了更多的功能和更好的使用體驗
〈2〉安裝 Node.js 和 npm
sudo apt install nodejs
sudo apt install npm
node -v
查看當前 Node.js 的版本〈3〉啟用 cron
sudo vi /etc/rsyslog.d/50-default.conf
將 cron.* 前面的 # 註解拿掉
〈4〉安裝 php
步驟 1: 安裝 PHP 8.2 以及多個常用的擴展模組,使 PHP 能夠處理更多樣的任務
sudo apt -y install php8.2-common php8.2-cli php8.2-curl php8.2-redis php8.2-bcmath php8.2-mbstring php8.2-xml php8.2-zip php8.2-posix php8.2-sqlite3 php8.2-pgsql
- ● php8.2-common:提供 PHP 8.2 的一些通用功能
- ● php8.2-cli:提供命令行介面的 PHP 8.2
- ● php8.2-curl:提供 PHP 8.2 的 cURL 擴展,用於處理 URL 資源
- ● php8.2-redis:提供 PHP 8.2 的 Redis 擴展,用於與 Redis 資料庫交互
- ● php8.2-bcmath:提供 PHP 8.2 的 Bcmath 擴展,用於高精度數學運算
- ● php8.2-mbstring:提供 PHP 8.2 的多位元組字串處理擴展
- ● php8.2-xml:提供 PHP 8.2 的 XML 處理功能
- ● php8.2-zip:提供 PHP 8.2 的 ZIP 檔案處理功能
- ● php8.2-posix:提供 PHP 8.2 的 POSIX 擴展
- ● php8.2-sqlite3:提供 PHP 8.2 的 SQLite3 資料庫支持
- ● php8.2-pgsql:提供 PHP 8.2 的 PostgreSQL 擴展
步驟 2: 查看當前 PHP 版本
php --version
〈5〉安裝 Composer
步驟 1: 查看當前 Composer 版本
composer --version
步驟 2: 將 Composer 的全局安裝路徑添加到 PATH 環境變數中
1.nano ~/.profile
打開 ~/.profile 文件2. 在文件末尾添加這一行
export PATH="$PATH:$HOME/.config/composer/vendor/bin"
3. 保存並退出編輯器(在 nano 中按 Ctrl+O,然後按 Enter,再按 Ctrl+X 退出)
4.
source ~/.profile
為了使修改立即生效,執行這行命令重新加載 ~/.profile 文件〈6-1〉安裝 MariaDB
sudo apt update
更新軟體包索引sudo apt install mariadb-server
安裝 MariaDBsudo systemctl start mariadb
啟動 MariaDB 服務sudo systemctl enable mariadb
設置 MariaDB 以開機自動啟動sudo systemctl status mariadb
顯示 MariaDB 服務的詳細狀態資訊sudo systemctl stop mariadb
停止 MariaDB 服務sudo systemctl disable mariadb
禁用它的自動啟動sudo apt remove --purge mariadb-*
刪除所有與 MariaDB 相關的套件sudo apt autoremove --purge
自動清理不再需要的套件和依賴mariadb --version
檢查 MariaDB 的版本[解決方案] valet install --mariadb 命令中的 --mariadb 選項無效,這表示 valet-linux-plus 版本不支持該選項。你可以按照以上步驟,手動安裝和配置 MariaDB
[解決方案] 遇到 "Invalid database credentials" 的錯誤,這表示提供的用戶名或密碼不正確。以下是可能的解決方案
# 進入 MariaDB 管理介面 sudo mysql -u root -p # 創建了一個名為 test 的新用戶,並賦予它所有資料庫的所有權限 CREATE USER 'test'@'localhost' IDENTIFIED BY 'test'; GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; # 退出 MariaDB 管理介面 exit
[解決方案] 使用 HeidiSQL 圖形界面來管理 MariaDB 資料庫
☞ Connect WSL's MySQL from Windows Host Machine# 以 root 用戶身份登入 MariaDB,並且使用 sudo 命令來提升權限,無需輸入 MariaDB 的密碼 sudo mysql -u root # 查詢用戶帳號 SELECT user, host FROM mysql.user; # 退出 MariaDB 管理介面 exit # 指定的 MariaDB 用戶(例如 test)登入 MariaDB,並且需要輸入該用戶的密碼登入 MariaDB mysql -u test -p # 重設其他用戶的密碼 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; # 退出 MariaDB 管理介面 exit # 指定的 MariaDB 用戶(例如 root)登入 MariaDB,並且需要輸入該用戶的密碼登入 MariaDB mysql -u root -p # 列出伺服器上的所有資料庫 show databases; # 退出 MariaDB 管理介面 exit
〈6-2〉安裝 PostgreSQL
步驟 1: 連線 PostgreSQL 官網
☞ PostgreSQL☞ Install PostgreSQL16.2 on Ubuntu 24
步驟 2: 使用手動設定
# Import the repository signing key: sudo apt install curl ca-certificates sudo install -d /usr/share/postgresql-common/pgdg sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc # Create the repository configuration file: sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' # Update the package lists: sudo apt update # Install the latest version of PostgreSQL: # If you want a specific version, use 'postgresql-16' or similar instead of 'postgresql' sudo apt -y install postgresql-16
步驟 3: 檢查 PostgreSQL 服務的狀態
sudo systemctl status postgresql # 使用 su 命令切換到該用戶 sudo su - postgres # 在 psql 提示符下輸入 (q 鍵: 退出分頁工具,返回到 psql 提示符) # 顯示 PostgreSQL 伺服器的完整版本信息 select version(); # 重設用戶密碼 alter user postgres with password 'postgres'; # 列出所有資料庫的名稱 select datname from pg_database; # 查看 \l # 退出 psql \q
步驟 4: 使用 pgAdmin 圖形界面來管理 PostgreSQL 資料庫
☞ pgAdmin☞ How to install PostgreSQL on WSL Ubuntu and connect pgAdmin
步驟 5: 其他指令
sudo apt install postgresql
安裝 PostgreSQLsudo systemctl start postgresql
啟動 PostgreSQL 資料庫服務sudo systemctl enable postgresql
使 PostgreSQL 服務開機自動啟動sudo systemctl status postgresql
檢查 PostgreSQL 服務的狀態sudo systemctl stop postgresql
停止 PostgreSQL 服務sudo systemctl disable postgresql
禁止 PostgreSQL 服務開機自動啟動sudo apt remove --purge postgresql* postgresql-client* postgresql-contrib*
刪除所有與 PostgreSQL 相關的套件sudo apt autoremove --purge
自動清理不再需要的套件和依賴psql --version
檢查 PostgreSQL 的版本〈6-3〉安裝 MySQL
作法
你完全可以把 MySQL 裝在 Windows 本機,然後讓 WSL2(Ubuntu 24.04 LTS 裡的應用程式)透過網路連線到本機的 MySQL。 這樣就能保留 MariaDB,在需要時切換到 MySQL 做測試或開發。安裝 MySQL
在安裝 MySQL for Windows 的時候,遇到 Port 設定畫面,把 3306 改成 3307(或 3308)。安裝完成後,MySQL Windows 版就會聽在 127.0.0.1:3307。☞ 在 Windows 上安裝 MySQL# 在 Windows 上開 PowerShell (管理員模式) 輸入 # 確認 MySQL 服務真的在端口 3307 執行 netstat -ano | findstr 3307 # 接著查 PID 對應的程式 # 就能知道是 mysqld.exe 還是 mariadbd.exe 在用。 tasklist /FI "PID eq 1234"
取得 DB_HOST
實際可用的 Windows IP,建議以 ip route 顯示的 gateway 來當你的 DB_HOST,然後 .env 設定:DB_HOST=xxx.xxx.xxx.xxx# 在 WSL2 終端輸入 # 此 IP 即是 Windows 主機在 WSL2 視角的對應 IP ip route | grep default
權限設置
項目一:修改 C:\ProgramData\MySQL\MySQL Server 8.4\my.ini 設定檔,添加:bind-address = 0.0.0.0
,來允許所有 IP 連線,修改後請重新啟動 MySQL 服務使設定生效。
bind-address = 0.0.0.0 要放在 [mysqld] 區段中,且檔案語法正確,沒有打錯字或被註解。重新啟動 MySQL 服務 WINDOW + R 輸入 services.msc 找到 MYSQL 重新啟動
修改檔案安全權限 右鍵點 my.ini 檔案,選「內容」→「安全性」標籤。 點「編輯」權限,選擇目前使用者帳號,確保有「寫入」權限。 如果沒有,給予適當權限後點「確定」保存。
項目二:Windows 防火牆對 3307 端口的放行設定
netsh advfirewall firewall add rule name="MySQL 3307" dir=in action=allow protocol=TCP localport=3307
點擊 Windows「開始」按鈕,輸入並搜尋「Windows Defender 防火牆」並打開。 在左側選單,點選「進階設定」。 會開啟「Windows Defender 防火牆 進階安全性」視窗。 左側選取「輸入規則」。 在右側操作欄點擊「新增規則」。 選擇「連接埠」,下一步。 選擇「TCP」,填入特定本地端口:輸入 3307。 下一步,選擇「允許連線」。 下一步,選擇適用的網路類型(通常都勾選全部:域、私用、公用)。 下一步,為規則輸入名稱(例如:允許 MySQL 3307 端口)。 點擊完成。 # 代表 WSL2 成功連上 Windows 上 MySQL 的 3307 埠 sudo apt install telnet -y telnet xxx.xxx.xxx.xxx 3307
項目三:MySQL 需允許此 IP 或主機連線
開啟 HeidiSQL 執行,只要連線使用者有足夠的權限(通常 root),且 MySQL 設定允許執行 CREATE USER CREATE USER 'root'@'%' IDENTIFIED BY 'root'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
測試連線
# 嘗試在 WSL2 用下面命令測試 mysql -h xxx.xxx.xxx.xxx -P 3307 -u root -p SHOW DATABASES;
問題處理
重新安裝 php8.2-mysql,讓 Laravel 使用的 PHP-FPM 環境能正確載入驅動,才能連線外部 MySQL# 請先執行下面兩個指令修復 PHP-MySQL 的驅動模組(特別是 mysqlnd) # 這會重新安裝以下套件:pdo_mysql、mysqli、mysqlnd(PHP 連接 MySQL 所需的核心驅動) sudo apt update sudo apt install --reinstall php8.2-mysql # 然後重啟服務 sudo service php8.2-fpm restart valet restart # 驗證是否真的修好了 php-fpm8.2 -i | grep -i pdo_mysql # 或用這個指令更明確看 php-fpm8.2 -m | grep -i pdo # 編輯 config/database.php 裡 mysql 部分(或者 .env 裡關於 DB 讀寫分離的設定),讓 read 和 write 主機都指向你 Windows MySQL 的 IP 跟 Port # 每次改完 config/database.php 或 .env,要清除快取 php artisan config:clear php artisan config:cache valet restart # 建立一個簡單的 route 來確認 Route::get('/test-user', function () { try { $user = \App\Models\User::first(); return $user ? $user->email : '沒找到 user'; } catch (\Exception $e) { return '❌ 錯誤:' . $e->getMessage(); } });
〈7〉安裝 Valet Valet 是一個輕量級的 Laravel 開發環境
composer global require genesisweb/valet-linux-plus
使用 Composer 安裝 Valet 的 Linux 擴展版本composer global show genesisweb/valet-linux-plus
確認 Valet 是否已經安裝valet install
valet --version
檢查 Valet 命令是否可用,如果一切正常,應該會顯示 Valet 的版本號valet fix
檢查和修復 Valet。Nginx 的日誌通常位於 /var/log/nginx 目錄中valet status
一個非常有用的工具,可以幫助你了解 Valet 和相關服務的運行情況〈8〉Hello, Valet!
步驟 1
pwd
顯示當前所在的目錄的完整路徑mkdir ~/php-projects cd ~/php-projects mkdir my-first-project cd my-first-project // 在專案目錄中創建 PHP 文件 valet link // 將當前目錄添加到 Valet 管理 valet links // 查看已管理的目錄 valet restart valet status
[解決方案] 如何透過 VS Code 編輯 WSL 環境中的專案
☞ 在 WSL 中開發[解決方案] 不需要的鏈接,無法在 Valet 管理的專案列表中移除
// 進到 Valet 符號鏈接的目錄 cd ~/.config/valet/Sites // 刪除符號鏈接 rm abc.test.test // 重啟 Valet valet restart // 再次檢查 Valet 管理的符號鏈接 valet links
[解決方案] 刪除專案
// 將當前目錄從 Valet 管理中移除 valet unlink // 強制刪除目錄 rm -rf my-first-project // 刪除證書 cd ~/.config/valet/Nginx rm my-first-project.test // 刪除 windows 證書 C:\Users\user\cert // 移除 windows hosts 文件裡的 url C:\Windows\System32\drivers\etc\hosts // 重啟 Valet valet restart // 確認 Valet 和相關服務的運行情況 valet status
步驟 2:
在 Windows 中,打開C:\Windows\System32\drivers\etc\hosts
手動編輯 hosts 文件假設你希望通過 my-first-project.test 訪問本地的 PHP 專案,可以添加類似以下的行:
127.0.0.1 my-first-project.test
步驟 3:
訪問你的專案 http://my-first-project.test步驟 4:
通過 HTTPS 訪問你的專案 https://my-first-project.test// 進到你的專案 cd my-first-project // 為你的專案生成和安裝 SSL 證書 valet secure // 在 window 的 cmd 執行指令 (C:\Users\user\cert) mkcert -cert-file my-first-project.test.pem -key-file my-first-project.test.key.pem my-first-project.test // 編輯證書,將 ssl_certificate、ssl_certificate_key 指向 window 產生的證書 cd ~/.config/valet/Nginx vi 證書 ssl_certificate /mnt/c/Users/user/cert/my-first-project.test.pem; ssl_certificate_key /mnt/c/Users/user/cert/my-first-project.test.key.pem; // 確保 Valet 的服務已重新啟動並應用了新的證書 valet restart // 確認 Valet 和相關服務的運行情況 valet status
Source
☞ ubuntu使用PPA安裝其它php版本☞ how To Install PHP On Ubuntu 20.04 or 22.04
☞ How to install Laravel 11 on Ubuntu 24.04 LTS [ PHP 8.3, Composer, SQLite ] | Create Laravel project
☞ How to Install PHP (from 8.3 down to 5.6) on Ubuntu 24.04
☞ 簡單介紹 Laravel Valet 如何安裝與使用
☞ INSTALL LARAVEL VALET LINUX IN WINDOWS PC (UBUNTU WSL) ★
☞ valet linux
☞ How to remove MySQL server completely from Ubuntu 24.04 LTS (Linux) ★
沒有留言: