目前分類:PHP (21)

瀏覽方式: 標題列表 簡短摘要

同事反映他用 PHP Mailer 6.0.3 寄信時,寄件人的名字無法正常顯示中文,就算在 $mail->setForm() 的第二個寄件者參數,做了 mb_convert_encoding 也一樣。

看了一下是他沒有設定到語系設定,可參考 "PHPMailer character encoding issues" 這篇:

$mail->CharSet = 'UTF-8';

加完就沒事了,打完收工。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

手上有幾個舊的網站用 TemplatePower 作為樣版,早期相安無事,現在 PHP 升到 PHP 7 以後,就看到系統會不停的噴出類似這樣的 error log:

PHP Deprecated:  Methods with the same name as their class will not be constructors in a future version of PHP; TemplatePower has a deprecated constructor in D:\templatepower\class.TemplatePower.inc.php on line 499

雖然頁面還是可以照樣正常套版,但是在 debug 時一直看到這些 log 交錯其中,覺得神煩,參考了 stackoverflow "PHP7 Constructor class name",原來以前舊版的 PHP 的物件導向中,類別 (class) 的建構方法 (constructor) 可以同名,現在必須要統一使用建構子 (__construct)。

所以依照 PHP 的新規則稍作修改,主要是加個 function __construct() { } 來做本來物件初始化時要做的事,像是從這樣(大約在第 60 行)

文章標籤

fannys23 發表在 痞客邦 留言(1) 人氣()

同事希望我判斷她下的查詢條件是否是整整一個月,我本來以為用 date_diff 就可以算出來,但在兩台不同電腦上跑出不一樣的結果來。比較了兩台機器的差異,主要是時區 (Timezone) 不相同。

寫一小段程式來測試一下:

<?php
文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

最近有一個頁面,要把檔案上傳到 server 上之後,把檔案本身直接轉成 BLOB 後塞到資料庫裡,資料欄位我開成 mediumblob。

`testfile` mediumblob comment '使用者上傳檔案',

小檔案上傳還沒問題,但大檔案上傳遇到一些狀況。首先是 Apache 會吐 HTTP 500 (Internal Server Error)。

我想了一下,在 Apache 的 httpd.conf 把 FastCGI 的 MaxRequestLen 調大一點(我調到 35MB):

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

很少寫 PHP script,這次要拆解小有份量的 Apache 記錄檔 (log),來練習一下。

用讀檔的模式來一行一行載入 log 檔後,用正規表示式來拆開 LOG,把它塞進資料庫裡,以便可以再運用。

首先,開一個資料表來放 log。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

朋友給我一個網路相簿,要我看看裡面的東西,但是單張單張點好慢,乾脆下載下來再從檔案總管看好了。

本來要用像 FlashGet 之類的批次下載的工具,不過檔案有 XML 格式的檔案清單、但檔名不規律,就自己寫程式抓。

 

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

今天遇到一個在 Load balancer 上的網站,採用 PHP 5 的 A 主機網頁正常,但使用 PHP 7 的 B 主機版面就怪怪的。追蹤了一下,看起來是 fgetcsv() 出問題,沒有正常解析。我們的 CSV 檔是 Big5 編碼的,看起來是解析了某個中文欄位之後,後續欄位就有異常。

上網查了一下,找到《PHP讀取BIG5編碼的CSV檔》,裡面提到:

「但如果 CSV 檔是 BIG5 編碼,當中文字中有包含反斜線(\)字元的衝碼字,
文章標籤

fannys23 發表在 痞客邦 留言(1) 人氣()

手上有一個網站,大部分的網頁語系都是宣告為 UTF-8,只有某個資料夾裡的網頁比較特別,都宣告為 Big5。今天看到測試的 server 裡, 宣告成 Big5 的那個資料夾的每一支網頁都變成以 UTF-8 模式載入,以至於使用者在不手動切換編碼的狀況下會看到一堆亂碼。

研究了一下原始碼,META 裡有宣告 Big5 沒錯。

<meta http-equiv="Content-Type" content="text/html; charset=big5">

可是從 Chrome 的開發人員工具,可以看到該網頁的 Response headers 送出語系 (charset) 為 UTF-8。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

參考 "PHP – Using oEmbed API to Embed Videos",想取回 JSON 資料,卻一直失敗。

研究了一下 PHP Manul,發現原因是文章裡說可以透過這樣的語法取值:

<?php
文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

解決的思維和上次連線到 Oracle 的問題很像(上次處理 Oracle 的心得:[PHP] 如何使用 PHP 的 OCI8 連線至 Oracle):

  1. 先確認 php.ini 裡,有把指定資料庫的 extension 取消註解。
  2. 確認 extension 資料夾裡有 php.ini 指定要讀取的 dll 檔。
  3. 確定指定資料庫 (Oracle / Sybase) 的核心 dll 有沒有在系統參數的 PATH 資料夾裡。
    (有的人會建議放在 C:\Windows\System32,有的人會說把檔案放在某個資料夾再把該路徑設定到 PATH,是一樣的道理。)

 

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

模仿前人的程式,寫了一段超迷你的程式要連 Oracle,但一直跳出的錯誤訊息:

PHP Fatal error:  Call to undefined function Ora_Logon()

查了一下官方文件,Ora_* 這種函式看起來不是官方支援的,網路上的文章倒是不少,可能是過時所以被拿掉了吧?向同事拿了他開發機上頭 PHP 的 ext 資料夾底下的 php_oracle.dll,嘗試在 php.ini 加上 "extension=php_oracle.dll",結果出現新的錯誤:

PHP Startup: Unable to load dynamic library 'C:/php/ext/php_oracle.dll' - 找不到指定的模組。

怪了,明明就放在一樣的路徑下。研究別人找不到模組的原因,有人說和引用順序有關,於是放在 ";extension=php_oci8.dll" 這行之後,一樣沒用,不過把 ";extension=php_oci8.dll" 的註解拿掉(這行最前面的分號刪除掉),「找不到指定的模組」這個錯誤訊息就消失了。但還是不認得 Ora_Logon() 這個函式。

文章標籤

fannys23 發表在 痞客邦 留言(2) 人氣()

有一段路徑是類似這樣的:

\\127.0.0.1\test\測試文件.doc

試著這樣要開檔案。

<?php

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

租了一個 Godaddy 的空間,預設的時區是 America/Phoenix。不管是開 .htaccess 做這樣的設定:

SetEnv TZ Asia/Taipei

還是在 php.ini 做這樣的設定:

[Date]
文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

我為網站的表單開了一個 bit 型態的欄位來儲存布林值 (boolean),取出時發現怎麼取,不管裡頭存的是 true (1) 或 false (0),抓出來都會被判斷成 true。

不管是這樣:

if($row_data["is_user"]==1)

還是這樣:

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

寫了一個上傳檔案功能,基本上上傳是沒有問題,但是第一個字元會被吃掉。
比方說上傳一個檔案 "123.pdf",上傳後檔名部分只能抓到 "23.pdf",超怪。
原本以為是編碼問題,但越調反而越多狀況。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

之前在本機開發時,在 Windows\System32\drivers\etc 的 hosts 檔案裡,故意設了一組 abc_test 的對應:

127.0.0.1   abc_test

同時也在 Apache 設定 virtual host,這樣在開發時連到 http://abc_test,就可以預覽效果,未來上線時也比較不用擔心相對路徑層數不同,會造成破圖或檔案連結有誤等問題。

不過,在 firefox 上開發完畢後,到 IE 上想要看跨瀏覽器效果時,卻連登入都沒辦法登入。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

網站從測試環境送上 production 之後,我在 IE9 可以下載檔案,但使用者反映他使用 IE8 無法正確下載。

錯誤訊息為:
「Internet Explorer 無法下載 xxx.php 從 xxx.xxx.xxx.tw。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

試著產生 ZIP 壓縮檔,下載檔案產生後,解壓縮時卻顯示「這個壓縮檔不是未知的格式就是損壞。」

研究了一下,原因是因為我用到了 TemplatePower,在頁首就 include 了 TemplatePower,使得頁面輸出壓縮檔時有了多餘的字元。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

這一天是透過 jQuery.ajax() 送出 request 後,發生資料拿不回來的錯誤。故事是這樣發生的──我有一段短短的 AJAX 和很簡單的 PHP,AJAX 大概是長成這個樣子的:

$.ajax({

文章標籤

fannys23 發表在 痞客邦 留言(2) 人氣()

在 Visual Studio,只要在函式 (function) 或類別 (class) 上方按下三次註解符號,就會自動產生一段 XML 格式的註解。填完這段註解後,在輸入函式時就會自動解析 XML 的內容,成為函式或類別使用的提示 (intellisense)。例如說這個函式有三個參數,每個參數應該給什麼格式?給定的參數的代表意義是什麼?如果每次寫新的函式時都能照著寫,日後呼叫函式或使用類別時,就能輕鬆辨識每一段程式碼的應用方式。今天發現在 eclipse 裡也有類似的功能。

完成函式的撰寫之後,輸入「/**」。接著按下 Enter,就會自動帶出後續的輸入提示。以下圖的程式碼為例,因為需要帶進一個參數,所以會自動要你填上參數的用意(寫在 @param 之後)。

文章標籤

fannys23 發表在 痞客邦 留言(0) 人氣()

1 2