新版 PHP 預設啟用 APC 模組後造成 class 找不到的錯誤

假設環境:
PHP 5.3.20
Apache/2.2.23 (Unix)

aaa.php 檔案裡面有 AAA class,bbb.php 檔案裡面有 BBB class,bbb.php 中 include aaa.php。BBB class 的 b_func() 函式裡面用到 AAA class (即:$oA = new AAA())。

說明:
APC (Alternative PHP Cache) 是 PHP 的一個延伸模組套件,是 PHP 的另一種快取 (cache) 機制,可以直接拿既有的 OPCODE 執行、免去每次都直譯 php 程式產生 OPCODE 來跑,進而加快 php 程式的執行速度,號稱可以提昇 20% 到 30% 的速度。
筆者將手邊的 PHP 程式轉移到新版 PHP 環境下執行時,PHP 卻拋出「class 找不到」的錯誤訊息,類似以下 log 訊息:

[Tue Jan 29 04:04:46 2013] [error] [client 123.234.171.235] PHP Fatal error: Class ‘AAA’ not found in /sites/prj1/bbb.php on line 32

Continue reading “新版 PHP 預設啟用 APC 模組後造成 class 找不到的錯誤”

[Apache][WP] 解決: wp-cron.php not found or unable to stat

[Apache][WP] 解決 error_log 中的 [error] [client 127.0.0.1] script ‘…/www/wp-cron.php’ not found or unable to stat 錯誤訊息

如果你一個 Apache web server 服務多個網站的話,而在 “主站” (寫在 …/apache/conf/httpd.conf 中的 DocumentRoot 那個即為主站) 的 error_log 檔案中要是看到上面這個訊息的話,那表示你在此 Apache 服務的網站中至少有一個網站是用 WordPress 架設的,並且它不是上述的 “主站”,而它嘗試要跑 wp-cron.php 時發生了錯誤。
Continue reading “[Apache][WP] 解決: wp-cron.php not found or unable to stat”

[Apache][MySQL] error_log: [crit] (70023)This function has not been implemented on this platform: DBD: driver for [DBDriver unset] not available

在 apache web server 的 …/apache/logs/error_log 檔案如果很大,並且一直重複看到以下錯誤訊息:

[crit] (70023)This function has not been implemented on this platform: DBD: driver for [DBDriver unset] not available
Continue reading “[Apache][MySQL] error_log: [crit] (70023)This function has not been implemented on this platform: DBD: driver for [DBDriver unset] not available”

[MySQL] 解決MySQL server has gone away問題

下 SQL 語法對 MySQL server 做存取時 (縱使只是使用 use database1; 這樣的指令, 不一定要用到 SELECT 指令) 可能會遇到以下這個錯誤訊提示:

MySQL server has gone away

可以從以下幾個方向去看看是哪一類問題: Continue reading “[MySQL] 解決MySQL server has gone away問題”

[PHP] 解決中文郵件寄件者, 收件者名稱, 信件標題亂碼問題

[PHP] 解決(非 ASCII 編碼)中文郵件寄件者或中文郵件收件者名稱, 或中文信件標題亂碼問題

在 PHP 程式中想要傳送一封含有非 ASCII 編碼(例如: UTF-8編碼)之信件寄件者或信件收件者名稱, 或郵件標題/主旨(subject) 的 email 時, 要根據 RFC 2047 [1] 對 “信件寄件者” 或 “信件收件者” 名稱, 或 “郵件標題/主旨” 做編碼後才能傳送, 不然會遇到亂碼問題 (寄件者或信件收件者名稱, 或郵件標題/主旨出現亂碼).

RFC 2047 中提到的編碼方式有以下兩種:
Continue reading “[PHP] 解決中文郵件寄件者, 收件者名稱, 信件標題亂碼問題”

[PHP] 用密件副本(BCC)傳送 email 的方法

How to send a B.C.C. E-mail in PHP?

在 PHP 程式中我們會用 mail() 函式來發送 email, 其 prototype 為:

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] )

其中必要的欄位有:

  1. to: 要送給誰
  2. subject: 信件的標題/主旨
  3. message: 信件內容

一般的使用程式範例: Continue reading “[PHP] 用密件副本(BCC)傳送 email 的方法”

改變/更改 SFTP 所連往的 port 以連到非 port 22 的遠端伺服器

SFTP to non port 22

正常的 SFTP client 與 SSH server 會參考 /etc/ssh/ssh_config 的設定來決定預設連往或跑起的 port (預設是用 port 22),如果要連往的遠端 SSH server 並非用 port 22 的話,SFTP client 連往遠端 sshd server 時要隨之改變成 server 的 port 號。

用圖形介面當然無問題,但用指令的話,參考 sftp command 的說明可知是有選項可以改變的,只要輸入下列指令便可:

sftp -oPORT=nn @

注意: -oPort 參數要在前面,以避免某些程式解命令列參數時解錯。

解法範例:

sftp -oPort=6789 jjdai@example.com