跳到主要內容

Ubuntu 22.04 安裝PHP 7.4

目前最新的 Ubuntu LTS 是 22.04 版,其預設的套件庫 PHP 是 8.1 版本。

相較於 Ubuntu 20.04 用的是 PHP7.4,PHP8.1對於變數的宣告和陣列的 KEY 值有很嚴格的限制,未事前宣告的變數或陣列 KEY值就會報錯。如果是小一點的程式,在報錯的地方再針對變數和KEY 多做一個判斷可以解決;但是大一點的程式就很傷腦筋了。

網路上有提供新增套件庫,將原本的 PHP8.1 降級成 PHP7.4 的方法,以前設定時還蠻順利的,但是最近新設定一台虛擬主機時,欲一直遇到 python 的問題,最後利用手動增加套件庫的方式才解決這個問題。

參考資料:https://askubuntu.com/questions/1393381/unable-to-add-ondrej-repository-apt-in-ubuntu-20-04

1、在 /etc/apt/source.d 中新增 ondrej-ubuntu-php-jammy.list

2、在 ondrej-ubuntu-php-jammy.list 中新增:

deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main
# deb-src https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main

3、匯入所需的金鑰:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4f4ea0aae5267a6c 

然後再作 apt update 及 apt install php7.4-fpm 及 php7.4 的相關套件即可。

設定系統主要啟用 PHP 版本

sudo update-alternatives --config php




留言

這個網誌中的熱門文章

SSH Tunnel(Port Forwarding)的應用

自己在管理伺服器和防火牆原則是最小開放原則,一定需要的服務 port 才會開放,例如網頁伺服器的 80、443 等。而管理用的 ssh ,可以的話就限縮來源 IP 範圍,加上限制可以登入的帳號或群組,要不然就改 port 編號;不過,改 port 編號會變成自己在遠端登入時要回想是改成多少,有點不是很方便。 所以最近建置的伺服器就不改 port 了,會加上 fail2ban 的防衛機制。 因為最小開放原則,像是 webmin(10000)這樣的 port 就不會開放,如果想要用的話,就用 ssh tunnel 方式作跳板連接。 例如伺服器的 public ip:123.123.123.123,要連 webmin 的話,就用: ssh 123.123.123.123 -L 10000:127.0.0.1:10000 SSH 登入後就會在客戶端開啟 127.0.0.1:10000 的監聽埠,用瀏覽器連本機的 127.0.0.1:10000 就會跳到伺服器端的 10000 埠。 一直以來,我都以為 ssh -L (Local Port Forwarding)方式只會在本機端綁定 127.0.0.1:xxxx的情形。不過,最近因為要解決一個臨時伺服器的設定問題,才發現原來不是只能綁在 127.0.0.1 上。 網路架構: 外部 public ip:123.123.123.0/24 內部 private ip:10.1.0.0/16 內部切出多個 class C的網路區域,其中 10.1.1.0/24 是 ServerZone,在外面用 DNAT 的方式將服務要求導入內部的伺服器。 其他 10.1.n.0/24 是各個區域內容IP,只能 NAT 出去,外部不能訪問到。 需求: Server-01:10.1.1.2,Server-02:10.1.20.2 Server-01在 ServerZone 內,從外部可以訪問,Server-02 在 PrivateZone 內,外部連不到。ServerZone 和 PrivateZone 彼此可以 SSH 互連。 現在希望可以在不變動兩台 Server 的 IP 區域,讓 Server-02可以被外部訪問到。 最簡單的方式就是先登 Server-01後,再從 Server-01 terminal 登到 Server-02上。但是需求是,...

Arudino 教學(三):多顆 LEDs

本次實作將加深 LED 電路,練習多顆 LEDs 與共地線電路,並使用 Arduino Uno 進行控制。另外, 本次實作每個同學需要抄寫「實作目的」、「線路說明」、「程式說明」與「進階」作為實作報告。 實作目的: 熟悉多顆 LEDs 與共地線電路接線 使用 Arduino 程式進行多顆 LEDs 控制 電路圖: 線路說明: LEDs 負極(短腳)共同連接在一起,再接至 Arduino GND(接地)腳位 LEDs 正極(長腳)先連接一220Ω 電阻之後,再分別連接至 Arduino 10 號與 11號腳位 程式截圖: 程式說明: 在 setup 區塊中,利用 pinMode 設定 10 腳位為輸出用途,設定 11 腳位為輸出用途 在 loop 區域中,利用 digitalWrite 送出 HIGH 點亮  LED,LOW 關閉 LED 燈,其中 10 號腳位 HIGH 時,11號腳位則為 LOW,反之亦然 delay(1000) 延遲一秒 進階: 改變延遲時間 增加閃動變化 增加 LED 的數量

CI 4.2.0 之後新增的 Auto Routing 設定

 一直以來都是利用  compose 來創建  CI4 的網站架構,在 CI4 更新到 4.2.0 版本之後,原本 function ***() 為作路徑的方式突然不能使用了,找了一下官網的說明之後,才發現有了新的 auto-routing 的設定。 Enable Auto Routing 開啟 auto-routing 的設定:修改 app/Config/Routes.php 設定 $routes->setAutoRoute(true) Enable Auto Routing (Improved) 基本上開啟上面的 auto-routing 的設定後,CI4 的路徑就會和以前一樣用 function name 來自動路由,但官網有建立還要再開啟 auto-routing(improved) 這個設定。 修改 app/Config/Features.php 開啟 auto-routing(improved)後,function 的名稱須要再加上 http method, 例如 getIndex()、postUpdate(),function 名稱配合 http method 才能正常執行,以增加網路安全,避免惡意的嚐試。