Category: PHP

PHP 用 curl 取代 file_get_contents()

PHP 要擷取其他網頁的資料,最方便的方法是用 file_get_contents() 函式,以下程式碼即可完成: 如果使用量不高,那麼用 file_get_contents() 沒什麼問題,但如果 PHP 擷取其他網頁內容的頻率很高,便建議改用 curl 完成了。因為 curl 的效率比 file_get_contents() 高,以下是 curl 的例子:

PHP mail() 設定 Return-Path

在 PHP 上使用 mail() 發送電郵,如果沒有正確設定 Return-Path, 發出的郵件會使用系統的主機名稱,例如 apache@hostname.server, 以下是程式碼: 在收到的郵件會看到寄件者是 from@example.com, 但當按下回覆時,會使用系統的主機名稱,除了回覆地址名,也會有部郵 email server 拒收,會在 email server 的紀錄檔出現 “invalid sender MX”。 原因是郵件的 Return-Path 並沒有使用 PHP 的 Return-Path 設定,郵件的 source …

JavaScript 搜尋並取代字串

在 JavaScript 做搜尋並取代字串可以用 replace() 來做, 例如: 上面的 string 變數是 “Hello Microsoft!”, 而變數 result 會變成 “Hello Linux!” 以上做法很簡單, 但最大的問題是, 只會取代第一個符合條件的字串, 例如: 上面只會將第一個 “Microsoft” 取代為 “Linux”, 第二個不會取代, 要將全部字串取代, 可以用 regular expression …

PHP 查詢 IP 所屬國家

要查詢 IP 所屬國家, 一般上會用 IP 資料庫查詢, 網上也有一些網站可以免費查詢, 但如果想在自己的 PHP 程式, 查詢 IP 所屬國家, 便需要下載一些 IP 轉國家的資料庫, 有付費及免費。 另一個較簡單方便的做法, 是使用 API 查詢, 以下會示範使用 freegeoip.net 的免費服務查詢 IP 所屬國家的方法。 freegeoip.net 把供 CSV, …

解決 PHP 錯誤 – Allowed memory size exhausted

PHP 其中一個常見的錯誤 “Allowed memory size exhausted”,這是由於執行的 PHP 程式使用的記憶體超出 PHP 設定的限制,要解決可以很簡單地修改 php.ini 檔案內的 memory_limit 選項即可。 首先開啟 php.ini,在 RHEL 及 CentOS 用 yum 安裝的 PHP,預設路徑是 /etc/php.ini: # vi /etc/php.ini 找到 “memory_limit” …

查詢已安裝的 PHP 版本

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

強制 PHP 顯示錯誤訊息

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

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

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