剛剛碰到一個機車的狀況,當我用 Windows Live Writer 編輯文章並自動上傳圖片的時候。會發生 ExtraNews 無法讀取由 WLW 所上傳的圖片作為預覽縮圖。並且還會在頁面上顯示 php 的 error 訊息。
剛開始我還想說是不是半透明PNG造成的問題,結果搞了老天,原來是目錄名稱問題。
![]() |
此篇為 Joomla! 相關教學文章:所屬擴充套件與適用版本如下
|
|
|
|
|
首先, WLW 所上傳的圖片會自動抓取文章標題讀取到的英文,並建立資料夾,例如我上一篇的圖片就放在 WindowsLiveWriterJoomla_C725 中。
而 Extra News 的縮圖建立法,是把圖片縮小後,另存在一個 resize 資料夾,並把原本的目錄結構複製過去。假設原圖在 images/stories 下。縮圖就會建立在 images/resize/images/stories 裡面。
問題就出在這邊,WLW建立的資料夾是有大寫的,ExtraNews會把整個名稱都複製過去。但是他本身讀取縮圖的路徑卻會全部轉成小寫.......。似乎這在linux伺服器上會被解讀成不同資料夾,因此不只讀不到圖片,還會出現錯誤訊息......
整理一下:
- WLW建立的圖片資料夾:
images/WindowsLiveWriterJoomla_C725- ExtraNews複製的縮圖路徑:
images/resize/WindowsLiveWriterJoomla_C725- 但是偏偏ExtraNews讀取圖片的路徑是:
images/resize/windowslivewriterjoomla_c725 (全變成小寫)
這下囧了...
處理方法有三個:
- 自訂WLW上傳路徑為小寫
- 修改ExtraNews讓他複製資料夾也轉成小寫
- 修改ExtraNews讓他讀取圖片路徑不要轉成小寫
1. 不可行,因為找不到相關資料,程式本身也無法改。 2. 可以考慮,可是翻遍整個程式檔案就是找不到相關的程式碼在哪裡.......
最後是 3.,總算讓我找到有一個讀取圖片的程式碼,在extranews.php的639行
$rzname = strtolower(substr($image, 0, strpos($image,'.'))) ."_{$tn_width}_{$tn_height}.{$ext}";
太好了,我把 strtolower() 刪除掉以後( "strtolower(" 以及$image後面刪一個 ")" ),整個程式就正常運作了,縮圖也正常顯示。呼,鬆了一口氣!修改後如下:
$rzname = substr($image, 0, strpos($image,'.')) ."_{$tn_width}_{$tn_height}.{$ext}";
老實說發這一篇也不知道要幹嘛,單純當作筆記紀錄一下,不知道這個地球上還有沒有第二個人剛剛好碰到跟我一樣WLW與ExtraNews衝突的狀況。剛剛關閉網站整個晚上就是在測試這個東西。真不瞭解原作者要轉成小寫的原因,要轉就轉完全嘛!然後WLW也真是的,不能自訂資料夾名稱,那麼長一串看起來實在很不舒服耶。
總之解決了一個小問題,累死了。








文章回應
後來才發現原來是刪錯範圍了。
我將()裡的東西都給刪了XDDD
多謝Asika阿!現在都正常了:)
我想我補個幾句話做解釋好了XD