Category: PHP

RHEL 7 / Centos 7 yum 安裝 PHP 5.5, 5.6, 5.7

我喜歡用 RHEL 及 CentOS 的最主要原因, 是因為 Redhat 對產品的支援周時長達 10 年, 對於生產環境的主機這點很重要, 不用經想準備為系統作升級。但 CentOS 有一個缺點, 就是預設的套件版本較舊, 像 PHP 版本, 除非手動編譯原代碼安裝, 否則可能到系統的生命周期完結, 也不會作主要升級。 現在 CentOS 7.3 的預設 PHP 版本為 5.4.16, 要在 CentOS …

同時安裝多個 PHP 版本

現在 PHP 其中一個很大的問題, 是很多個不同的 PHP 版本都有人使用, 對於開發者需要顧及程式碼是否可以在不同版本執行, 而對系統管理員, 就要面對不同程式可能需要不同 PHP 版本。 以下記錄一下在系統安裝不同 PHP 版本, 並可以按需要設定不同 Virtualhost 或目錄, 可以使用不同 PHP 版本的方法, 以下會以 CentOS 7 及 Apache 作為安裝環境。 首先在系統用 YUM 安裝好 Apache …

CLI 執行 PHP 時自訂 php.ini 設定檔

很多情況需要在 CLI 下執行 PHP, 例如要執行 /root/my-script.php, 只要執行以下指令便可以: # php /root/my-script.php 在預設的情況下, 執行以上 PHP script 時, 會跟著預設的 php.ini 有著相同的設定。在 Apache 還好, 可以用 php_admin_flag 設定個別 VirtualHost, 但在 CLI 就不可以用 php_admin_flag 設定了。 以下是在 …

PHP 連接 MongoDB

要用 PHP 連接 MongoDB 資料庫, 需要先安裝 PHP Mongo Driver, 以下文章會以 CentOS 為例, 透過 EPEL 安裝 PHP Mongo Driver, 並用 PHP 連接 MongoDB 資料庫, 示範新增、修改及刪除資料。 先加入 EPEL Repl: 執行指令安裝 PHP …

PHP 複製/重新命名/刪除檔案

PHP 對檔案的操作, 如複製、移動及刪除檔案都已經有內建函式, 只要對檔案及寫入目錄有寫入權限, 要實現很方便。 複製檔案 PHP 有內建函式 copy() 可以複製檔案, : 以上會將檔案 ./file1.txt 複製到 ../dir/ 目錄下 file123.txt. 而 PHP 的 copy() 成功複製後, 會回傳 TRUE, 失則則傳回 FALSE, 可以判斷是否成功複製: 移動檔案 …

PHP 轉換 MySQL 日期格式

PHP 提供很多關於日期及時間的函式, 在 MySQL 如果沒有使用 Unix timestamp 儲存時間, 而使用 MySQL 的 Date 儲存類型的話, 在轉換及計算日期方面會較麻煩。 要轉換 MySQL 的日期格式, 可以使用 PHP 內建的 strtotime() 函式, 將 MySQL 的日期格式轉換為 Unix timestamp, 之後再用 date() 顯示不同格式的日期, …

PHP 報錯: “Notice: Undefined variable” 及 “Notice: Undefined index”

在 C 或 Perl 這些程式語語, 在使用變數前需要先進行宣告, 而 PHP 則不需要宣告變數, 可以直接使用變數。 PHP 不需要宣告變數仍可執行, 只要在某些主機會出現 Warning, 例如: 上面程式碼並未宣告變數 $test, 所以會出現錯誤 “Notice: Undefined variable: test”, 但由於這個只是 warning, 所以程式會繼續執行, 除了顯示錯 warning 外, 也會顯示 …

RHEL / CentOS 安裝 APC 加速 PHP

APC (Alternate PHP Cache) 是一套開源的 PHP 快取系統, 它可以將沒有改變 PHP Code 的情況下, 將已經編譯的結果緩存下來, 當下次需要使用時, 就可以節省重新編譯的時間及系統資源。 在 RHEL 及 CentOS 安裝 APC 十分簡單, 只要透過 YUM 便可以全部完成, 以下方法在 CentOS 6 及 CentOS 7 …

編譯 PHP 常見錯誤及解決方法

相比起用套件管理員 (如 yum, apt-get) 安裝 PHP, 編譯 PHP 源碼較需要較多步驟, 最常見的問題出在套件相依性上。但由於編譯源碼安裝可以自訂各種設定, 所以還是很多情況需要編譯源碼安裝的。 以下會列出在編譯 PHP 時常見的報錯及解決方法。 報錯: 解決方法: # yum install bzip2-devel 報錯: 解決方法: # yum install curl-devel 報錯:  …