Category: PHP

查詢已安裝的 PHP 版本

由於 PHP 各版本的寫法都略有不同,很多時都需要查詢系統內的 PHP 版本,或者系統管理員也有時會需要檢查 PHP 版本,要查詢系統內的 PHP,分別可以用 PHP 程式或者 CLI 指令模式完成,以下分別看一看幾種不同方法。CLI在 CLI 查詢 PHP 版本十分簡單,用 php 指令便可以: $ php –version 或 $ php-cgi –version 執行後會有類似的輸出: PHP 5.4.16 (cli) (built: …

強制 PHP 顯示錯誤訊息

很多主機基於保安理由, 將 PHP 執行時的錯誤訊息隱藏, 當 PHP 程式執行時遇到錯誤, 即使是 run time error 這類錯誤, 都只會顯示空白內容。原因是在 php.ini 設定了這兩行:display_errors = Off error_reporting = Off上面兩個設定, 只要其中其中一個設定成 Off, 都不會顯示錯誤訊息, 這樣對於程式除錯很麻煩, 要暫時顯示 PHP 的錯誤訊息方便除錯, 分別可以修改 PHP 及 …

禁止個別 VirtualHost 或目錄使用 PHP mail() 函式

PHP 的 disable_functions 選項可以停用某些特定的 PHP 函式, 主要是基於安全理由, 將一些對系統有威脅的函式停用, 但 disable_functions 必須透過 php.ini 設定, 因為如果可以在 httpd.conf 或 .htaccess 設定, 使用者便很容易將停用的函式開啟。之前遇到一個情況, 要將個別 VirtualHost 的 mail() 函式停用, 但主機內其他 VirtualHost 仍要繼續開啟 mail()。雖然 disable_functions 不能在 …

PHP 5.4 或以上重現 Register Globals

很久以前的 PHP 預設開啟 Register Globals 選項, 這樣寫程式就很方便, 但這個方便也帶來安全性問題, 所以後來 PHP 預設會將 Register Globals 關閉, 對於一些要開啟 Register Globals 的程式, 在不修改程式碼的情況下, 還可以透過修改 php.ini 或 .htaccess 的方法解決。但在 PHP 5.4 開始, PHP 開發團隊將 Register …

解決 WordPress 的 xmlrpc.php DDOS 攻擊

XML-RPC 是 WordPress 的 API, 給開發者開發手機 Apps, 桌面應用程式或其他服務時, 可以跟 WordPress 溝通, 從遠端能達到很多需要登入 WordPress 後台才能做的工作。xmlrpc.php 則是負責這個 API 的檔案, 而很多針對 WordPress 的 DDOS 攻擊也是針對這個檔案。早前在一台 VPS 上面, MySQL 的使用資源很高, 停止 Apache 後便沒有問題, 查看 …

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 及 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 設定了。以下是在 CLI …

PHP 連接 MongoDB

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