Category: PHP

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 …

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

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

PHP 判斷字串是否有中文

在 PHP 要判斷字串是否有中文,可以用 mb_strlen() 及 strlen() 兩個函式實現。strlen() 會回傳字串的長度,但如果是中文, 日文及韓文等文字,會回傳較長的結果。而 mb_strlen() 則可以加入編碼,例如 UTF-8 及 BIG5 等,讓 PHP 自動判斷字串的長度,只要比對 mb_strlen() 及 strlen() 回傳的字串長度,如果相同,即表示沒有中文字在字串內,如果不相同,那便表示有中、日、韓等亞洲文字存在,例如: 上面 mb_strlen() 設定了字串為 UTF-8 編碼,如果是 BIG5 編碼,則要改成 BIG5, …