Posts

Ubuntu 22 無法用 apt 安裝 php8.1-mcrypt & libmcrypt

先查詢是否已安裝 mcrypt # php -m | grep mcrypt 安裝 php-mcrypt 套件 # apt install php8.1-mcrypt 會出現以下的錯誤訊息 php8.1-mcrypt : Depends: libmcrypt4 (>= 2.5.8) but it is not installable 有看到資料說 mcrypt 於 php 7.2 後以移到 pecl 中 所以也嘗試用 pecl 安裝 mcrypt # pecl install mcrypt configure: error: mcrypt.h not found. Please reinstall libmcrypt. ERROR: `/tmp/pear/temp/mcrypt/configure --with-php-config=/usr/bin/php-config --with-mcrypt' failed 也是失敗 後來到這邊 直接下載 .deb 安裝 下載完後安裝 # dpkg -i libmcrypt4_2.5.8-7_amd64.deb 安裝完再用第一個指令確認一下 我的環境: Ubuntu 22.04 PHP 8.1.11

如何在 CentOS8 中安裝 pdo_oci

Image
由於有連接 Oracle 資料庫的需求 pdo_oci 安裝不像是 mysql 那樣的簡單 這邊主要分為三個部分 我的環境是: CentOS 8.6 x86_64 Oracle 是 21c Express Edition PHP 是 7.4 版 安裝 Oracle Instance Client 到 Oracle 官網下載 rpm 下來安裝,這邊需要兩個檔案 Base & Development and Runtime(SDK) 版 目前最新的 21.6 版 oracle-instantclient-basic-21.6.0.0.0-1.el8.x86_64.rpm oracle-instantclient-devel-21.6.0.0.0-1.el8.x86_64.rpm 要先安裝這個套件,否則下面的 rpm 安裝會有問題 # yum install libaio # mkdir /opt/oracle && cd /opt/oracle 然後用 wget 的方式下載上述兩個檔案 再執行安裝 # rpm -Uvh oracle-instantclient-basic-21.6.0.0.0-1.el8.x86_64.rpm # rpm -Uvh oracle-instantclient-devel-21.6.0.0.0-1.el8.x86_64.rpm 安裝 OCI 先安裝這個套件 # yum install php-pear systemtap-sdt-devel  然後使用 pecl 安裝 oci8-2.2.0(這個版本是 PHP 7 專用的,其他版本 請參照 ) # sudo PHP_DTRACE=yes pecl install oci8-2.2.0 安裝 PDO_OCI # yum install php-oci8 查看是否安裝成功 打開 phpinfo 頁面,搜尋 pdo_oci 及 oci8 會看到以下面話代表安裝成功!   參考文章來源: [1]  PHP 5.x PDO 連結 Oracle for CentOS 7 [2]  PHP oci8 won't install through pecl: "fatal error: oci8_dtrace_gen.h"

擴增 GCP 硬碟

到 Google Cloud Platform 擴增完硬碟後 在主機內下指令即可套用 # resize2fs /dev/sda1 免重開機  參考文章 [GCP] 不停機擴增 Linux 主機硬碟空間

如何處理/關閉 PHP 自動轉向圖片的功能

Image
Photo By Mae Mu 在 Lumen 中 某些圖片會自動轉向 會發生這種情況通常是單眼等較專業相機拍出來的照片 EXIF 中出現 Orientation 或是 Orientation 不是 0 影像處理的 lib 就會自動依照 Orientation 的值做對應的轉向 如果 Orientation 是 6 則是右轉 90 度,就會變成直立的照片 如果 Orientation 是 8 則是反方向轉 90 度 後來發現這似乎不是 Lumen 或套件的問題 問題出在 GD or iMagick 翻了文件 GD 似乎無法針對這部分去做設定 iMagick 可以,但我不想為了這個特別去裝肥肥的 iMagick 啊 如果想避免這個情況 由於無法單一清除 Orientation meta 資訊 最簡單的應該是一開始就把 EXIF 資訊給抹除掉 不然可以參考以下的方式,雖然有點繞 但可以 work 就好 XD 與其說關閉轉向功能 這邊實作的是,他轉幾度,我就轉幾度回來 orz...      // 如果照片中 exif 有 Orientation 資訊,則反轉 public function fixOrientation ( $imgObj , $image ) { $exif = @ exif_read_data ( $image ); if (! $exif ) { return ; } $orientation = ( $exif && isset ( $exif [ 'Orientation' ])) ? $exif [ 'Orientation' ] : NULL ; switch ( $orientation ) { case 6 : // rotate 90 degrees CW $imgObj -> rotate (- 90 ); break ; case 8 : // rotate 90 degrees C...

CentOS8 crash 之如何查詢 php-fpm 掛掉導致系統 crash 的查詢方式

Image
首先先搜尋 /var/log/message 裏面當機的原因 grep -i 'killed process' /var/log/messages 這篇主題主要是講述因 php-fpm 當掉的情形 php 當掉可以查詢的方向有: 1. php-fpm log 2. Nginx access or error log 可以從上述查詢到的時間點左右調查 這次的情況是某支 API 短時間內被大量的呼叫 剛好這支 API 又跑得比較慢 一時處理不及就炸了 順便也檢視一下 php-fpm 的設定 分享一下 `/etc/php-fpm.d/www.conf` 的設定 pm.max_children = 60 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.process_idle_timeout = 10s pm.max_requests = 500 其中參數該怎麼設定可以參考一下底下的 Reference 每個人講的似乎都不太一樣 可能要自己觀察看看怎樣比較適合自己 查詢 php 記憶體的平均使用量 ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }' 檢查共有開啟多少個 php-fpm process ps -ylC php-fpm --sort:rss 另外建議也可以查看 `systemctl status php-fpm` 剛好有些 process 不應該卡很久的剛好看到 主機規格 Google Compute Engine 1 vCPU 5G RAM Nginx 1. php-fpm 7.4.23 Reference Finding which process was killed by Linux OOM killer Nginx 與 PHP-FPM 最佳化效能設定教學與技巧 php-fpm 效能優化 PHP-FPM 效能調校 on CentOS 7 Nginx 啟用 PHP-FPM 服務狀態監控網頁教學 Linux 用 ps...

如何在 Google Cloud SQL 匯出 binlog

Image
  # mysqlbinlog --base64-output=AUTO --verbose -R -h [CLOUD SQL IP] -u root -p mysql-bin.000199 > /tmp/binlog-dump-000199.sql MySQL 5.6 開始支援 GTID 需要搭配上面的參數才能將 binlog 解析出 SQL 參考來源: Show sql statements from mysql binlog (GTID)

測試 GCP 硬碟硬碟效能(同場加映 Vultr)

Image
Photo by  Kolleen Gladden 標準永久硬碟 Zonal standard PD 寫入 # hdparm -t --direct /dev/sdc Timing O_DIRECT disk reads: 378 MB in  3.01 seconds = 125.47 MB/sec Timing O_DIRECT disk reads: 380 MB in  3.00 seconds = 126.53 MB/sec Timing O_DIRECT disk reads: 380 MB in  3.00 seconds = 126.66 MB/sec 讀取 # hdparm -t /dev/sdc Timing buffered disk reads: 374 MB in  3.00 seconds = 124.54 MB/sec Timing buffered disk reads: 380 MB in  3.01 seconds = 126.09 MB/sec Timing buffered disk reads: 380 MB in  3.01 seconds = 126.14 MB/sec SSD永久硬碟 Zonal SSD PD 寫入 # hdparm -t --direct /dev/sda2 Timing O_DIRECT disk reads: 738 MB in  3.00 seconds = 245.72 MB/sec Timing O_DIRECT disk reads: 608 MB in  3.02 seconds = 201.53 MB/sec Timing O_DIRECT disk reads: 396 MB in  3.07 seconds = 128.95 MB/sec 讀取 # hdparm -t /dev/sda2 Timing buffered disk reads: 740 MB in  3.00 seconds = 246.42 MB/sec Timing buffered disk reads: 53...