收錄問與答的條目。
Table of Contents
|
瀏覽及執行問題
瀏覽頁面出現 XML 分析錯誤? (IE 除外)
預設情況下 XHTML 1.1 輸出 MIME 為 application/xhtml+xml,這是規範的標準類型。除了 IE 以外其他瀏覽器都可以正確支援。但如果使用此標準模式頁面的成像引擎將會十分嚴格,一旦頁面有嚴重不合乎 XHTML 標準的語法便會停止解析 (Opera 可以重新以 HTML 解析) 造成瀏覽中斷。這情況發生於 1. 管理者自行插入原始碼時插入了不合規範的原始碼 2. 空間商插入不合規範的區段廣告。
解決方案:
PIO 4th.Release.2 以後版本:
config.php 設定檔 USE_XHTML 選項設成 0 即可。
其他版本:
打開 lib_common.php (PIO 版在 /lib 目錄下),搜尋以下程式碼並改為註解:
header('Content-Type: '.((strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')!==FALSE) ? 'application/xhtml+xml' : 'text/html').'; charset=utf-8'); //↓↓↓ //header('Content-Type: '.((strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')!==FALSE) ? 'application/xhtml+xml' : 'text/html').'; charset=utf-8');
存檔後上傳應可暫時解決問題。但要完全根除還是需要從被插入的原始碼作語法上的修正才行。(廣告就沒辦法,可以的話盡量找沒廣告的空間或虛擬主機、自架主機)
附: XHTML 1.1 與 HTML 不同處及應注意要點
請參考中文維基百科 XHTML 條目 (點按此處瀏覽)。
- 元素標籤需全部小寫
- 部分元素標籤在 XHTML 已經取消 (如 <font>),請改用 CSS 樣式表指定
- 元素標籤要對稱 (<xx></xx>),如果只有單獨一個元素標籤 (稱作空元素) 請使用 <xx /> 方式
- 元素標籤屬性值請用引號 ", ' 框起,即使是沒有值的屬性 (如 checked) 也需要賦值 (checked="checked")
- 元素標籤的部分屬性值在 XHTML 已經取消
- 在 XHTML 裡,特殊符號不能直接出現而需要以參照碼形式表示 (最常見的如 & => &, < => <, > => >)
如果不確定網頁是否符合 XHTML 標準,可以使用 The W3C Markup Validation Service 來驗證,
或使用 HTML Purifier 小程式來幫助您把標籤自動轉換為正確的 XHTML 1.1 格式。
圖檔上傳後並沒有存在於圖檔資料夾,另外發現根目錄有 *.tmp 檔案
可能是上傳過程中因為程式執行出錯中斷了,造成暫存檔出現。發生的原因可能為網路問題 (上傳中斷)、程式運作問題 (找看看伺服器的 Error log 指出程式哪邊出問題)。
另一種可能為寫入權限問題,請參見「回應頁面快取無法寫入於快取資料夾」相關說明。
回應頁面快取無法寫入於快取資料夾
這可能是伺服器的權限設定比較嚴格的原因,不同使用者沒有權限進行操作。執行 PHP 程式的使用者帳戶未必有權限可以操作自動產生的資料夾。
解決方法為手動刪除這些資料夾後,再手動新增同名資料夾,並將權限改為 777。這樣資料夾的擁有者便會改變,有權限進行操作。
如果出現 PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 41 bytes) in /lib/pio/pio.sqlite.php on line XX 或類似的字樣,請增大 config.php 的 memory_limit 一項所設定的大小。
回應頁面快取功能也是一樣的問題,解決方法也相同:手動刪除資料夾後,再手動新增同名資料夾,並將權限改為 777。
瀏覽 Pixmicat! 靜態頁面時瀏覽器白色一片?
本問題通常為瀏覽器誤判頁面編碼導致解析錯誤,經常發生於 IE 系的瀏覽器。
- 使用者請查看網頁編碼是否為 Unicode (UTF-8),如果不是將其修正即可。
- 管理者若使用 Apache 伺服器而想避免上述情況發生,可檢查主機是否有開啟 mod_mime 功能;若有則可使用 AddDefaultCharset 指令於所有輸出網頁強制指定使用 UTF-8 編碼,或者亦可使用 AddCharset 指令搭配自訂副檔名(例如 index.html.utf8)而達到動態指定編碼的效果。
另一種可能是伺服器端的問題,而非瀏覽器的問題。伺服器端可能因為所謂的安全因素而封鎖一些會使用到的函數(或其他不確定因素),因而執行發生問題。
- 試著把 config.php 的 GZIP_COMPRESS_LEVEL 改成 0,不少免費空間不支援 Gzip 即時壓縮。
- 有的伺服器會把 <?xml version="1.0" encoding="UTF-8"?> 一行也當成 PHP 執行 (PHP.ini short_tags),請從 inc_pixmicat.tpl 搜尋這段並將其刪除後以 UTF-8 (without BOM) 儲存後重新上傳 (比較舊的版本可能在 lib_common.php),再手動連到 pixmicat.php?mode=remake 重新生成頁面。
瀏覽頁面出現 Parse error: syntax error, unexpected T_STRING in /XXXX/index.htm on line 1?
基本上這個情況跟上面的白色一片差不多,差別在於白色一片是伺服器關閉了錯誤提示,而這個情況是開啟了錯誤提示。知道錯誤訊息後就比較好辦了,這個現象可以分析如下:
- 明明是 HTML 檔案,卻出現 PHP 錯誤訊息,可見檔案被當作 PHP 解析
- unexpected T_STRING 代表未預期的字串,可見是語法錯誤了
- on line 1 告訴我們問題在檔案的第一行
第一行是什麼呢?哈,正是 <?xml version="1.0" encoding="UTF-8"?>,他真的把這個當成 PHP 執行了,難怪會錯誤。請參照上一條的相關解決方式處理。
執行程式出現 Warning: Cannot modify header information - headers already sent by (xxx:1) in xxx on line xxx?
這個是因為修改檔案時儲存為 UTF-8 順便存入了 UTF-8 BOM 字元,造成要修改 HTTP 檔頭時因已輸出字元造成錯誤。請不要使用微軟的記事本存檔,另外其他程式存檔時記得設定不要存入 BOM 字元。
(Log版/PIO Log後端) 當使用更新文章重新生成靜態頁面快取時,發生討論串亂掉情形 (即有的文章出現位置不對,有的卻沒顯示)?
Log 版採用了兩個檔案加一個快取來幫助儲存所有討論串資料,而容易因為競賽狀況 (Race Condition) 或其他問題造成任一檔案毀損。因為文字檔並沒有容錯或修復功能,所以索引亂掉的情況下極有可能變成這個樣子。
解決方案:
- 刪除 lutcache.dat : 這檔案為索引查找表快取,大部分的索引錯誤可能因為此檔不同步發生,刪掉之後程式運作會自動再造。
- 使用 rebuildtree.php 公用程式 : PIO Log 後端可以嘗試使用此工具試圖以 img.log 生成新的 tree.log,但大前提是 img.log 並未損毀。建議在第一方案無用時立刻採取此方案,救回機率大。
- 修改 tree.log : 將有問題的編號自討論串中移除,有時候發生一篇文章接在兩個討論串,就有可能是此檔出問題。
- 修改 img.log : 這是比較嚴重的情況,若是連投稿文字記錄檔都毀損,幾乎救不回來,只能將尚完整的記錄取出來並刪除其他已毀損的檔案行。
如果情節嚴重,請考慮砍掉重練 (RESET)。
如何砍掉重練 (RESET)?
還記得當初如何初始化 Pixmicat! 的嗎?現在我們只需要再回復到最開始的環境即可以再度初始化。
步驟:
- 刪除 /src, /thumb 資料夾 : 因為我們要「砍掉重練」,舊有的圖檔無法對應到新文章。請直接刪除這兩個目錄及底下所有檔案。
- 刪除 /cache 資料夾 (有的話) : 此目錄為 PIO 版之回應頁面快取暫存資料夾,如果 USE_RE_CACHE 設為 1 則此目錄就會存在。將此目錄及其下所有檔案刪除。
- 刪除 *.htm 靜態頁面 : 預設值會存在 index.htm 跟 1.htm 等 (數字作檔名的許多檔案),這些檔案是每一頁的快取,同樣的請直接刪除。
- 刪除 PIO 後端 : 依照使用後端的不同,可能為 Log、MySQL 或是 SQLite 等等……請刪除這些儲存資料,比方說 Log 版即為 img.log, tree.log、MySQL 為伺服器上的 imglog 資料表等。
- 刪除其他暫存 : *.dat : 如果目錄有副檔名為 dat 的暫存檔案,一樣請直接刪除。
最後打開 pixmicat.php,找到 switch($mode){ 上面一行的 //init(); (可能是註解起來或是已被刪除),將其恢復為 init(); 表示我們要初始化。
init(); // ←■■!程式環境初始化,跑過一次後請刪除此行!■■ switch($mode){ case 'regist':
以 UTF-8 (不含 BOM 字元) 編碼儲存後,重新上傳到伺服器,以瀏覽器瀏覽 pixmicat.php,如果初始化完成,再將 init(); 一行註解起來或刪除,砍掉重練完成。
上傳的圖片點開來看卻是破圖 (圖片顯示不完整,底下呈現色塊似的內容)
經網友反應這應該是 Apache 伺服器的設定問題,使得 Apache 傳輸圖片到一定量便中斷傳輸,造成圖片顯示不完整 (但在伺服器硬碟內的圖片是完整的)。請嘗試修改 httpd.conf 的設定。
EnableSendfile On
改成 Off 後應該能解決這個問題。
修改及管理問題
我想加入 Google AdSense (或其他類似內容) 在頁面內,該如何修改?
PIO 4th.Release 以後:
請開啟 inc_pixmicat.tpl 檔案,此樣板檔為 Pixmicat! 用以輸出頁面所讀取的檔案。@!--&FOOTER--> <!--/&FOOTER--@ 區塊為頁尾,@!--&BODYHEAD--> <!--/&BODYHEAD--@ 區塊為頁首。只支援 HTML 碼不支援 PHP,特別注意。而插入的原始碼也請遵守 XHTML 1.1 的規定 (單雙引號、屬性值等等)
PIO 3rd.Release 以前 (含舊有 Log/MySQL 版):
請開啟 lib_common.php,這裡頭儲存了生成的頁面之頁首和頁尾和一些 Pixmicat! 本身會使用到的函數。注意看就可以很容易的發現關鍵的部分。假如我想在頁尾加上廣告,只要注意:
/* 輸出頁尾文字 */
function foot(&$dat){
這種的函式裡面的內容便可以大略知道如何插入程式碼。請特別注意到雙引號、單引號影響 PHP 語法正確與否的問題。
如果要放在頁首那也不是問題,同樣有對應的函式:
/* 輸出表頭 */
function head(&$dat){
仔細注意註解及內容應該不難找到,接著只要找到適當的地方插入程式碼即可,注意要保持 PHP 語法的正確,單雙引號很重要。
因為TOS關係,裡版不能用 AdSense …
改用 AVN Ads 不就好了 XD
在回應頁面要顯示廣告的話,把USE_XHTML關上就可以了。
依照架設教學指示操作,步驟進行到刪除初始化。
把初始化語法刪除後,首頁卻顯示有錯誤。
除了初始化以外其他語法都沒動過還是會錯誤。
PIO、LOG都試過,空間是:http://000webhost.com/
錯誤訊息:Parse error: syntax error, unexpected T_STRING in /home/a9218024/public_html/pmc/index.htm on line 1
試問有沒有解決的方式….
還是我問錯地方了|||….
http://pixmicat.wikidot.com/pmcfaq#toc6
怕未來有人再問所以把問題獨立出來,其實這問題跟引起白色一片的問題是重疊的。
不好意思orz
我原先出現【Parse error: syntax error, unexpected T_STRING in…..on line 1】這串字
然後我就按照您寫的步驟把【<?xml version="1.0" encoding="UTF-8"?>】刪掉
但背景卻變成白色orzz
我也有把【GZIP_COMPRESS_LEVEL】改成0
副檔名改成utf8
但是背景還是一樣是白色(淚)
我空間也是用000webhost
這是網址↓能的話麻煩您幫我解惑orzzz
http://npic103gud.net46.net/pixmicat-pio_7rel/pixmicat/index.htm?1369938357
(要換成半形orz)
安装完成后从pixmicat.php进入,然后跳到index,然后会跳转到运营商广告页(所有的错误都会跳到广告页 有没有什么解决办法呢。。
為什麼我的BBS上傳圖片後圖片不顯示?(但在服務器裡卻能看到圖片文件)
謝謝!
那個- -還望有人注意到這裡,告訴我該怎麼處理RSS Feed訂閱服務的錯誤,只明白大概是要弄數據庫什麼的,不知道詳細設定在哪
2015-01-28T03:33:45-05:00 ERROR Global - Error caught: #2: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /home/u946998052/public_html/CAT/module/mod_rss.php on line 36
2015-01-28T03:33:45-05:00 ERROR Global - Error caught: #2: mysql_query(): A link to the server could not be established in /home/u946998052/public_html/CAT/module/mod_rss.php on line 36
2015-01-28T03:33:45-05:00 ERROR Global - Error caught: #2: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/u946998052/public_html/CAT/module/mod_rss.php on line 37
2015-01-28T03:33:45-05:00 ERROR Global - Error caught: #2: mysql_free_result() expects parameter 1 to be resource, boolean given in /home/u946998052/public_html/CAT/module/mod_rss.php on line 37
2015-01-28T03:33:45-05:00 ERROR Global - Fatal error caught: #8: Undefined offset: 6 in /usr/lib/php/head.php on line 90
預覽網頁:
關閉預覽