วิธีแก้ปัญหา modMainMenuHelper::buildXML() expected to be a reference, value given

วิธีแก้ปัญหาเมื่อหน้าเว็บ joomla ของท่านขึ้น warning ว่าWarning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given ….

สาเหตุของปัญหา:

เกิดจากใน modMainmenu มีคำสั่งที่เขียนให้ทำงานใน php 5.2 ดังนั้นเมื่อเซิรฟ์เวอร์มีการอัพเกรดเป็น php 5.3 คำสั่งนั้นจึงไม่ทำการและขึ้นเป็น warning ที่หน้าเว็บว่า

Warning: Parameter 1 to modMainMenuHelper::buildXML() expected to be a reference, value given in ….\domains\joomla\libraries\joomla\…

วิธีแก้ไข มี 2 วิธี:

1. อัพเกรดเป็น version ใหม่สุดของ joomla ตระกูลนั้น

หรือ

2. แก้ไขคำสั่งในไฟล์ helper.php ของ joomla โดยไปที่ file manager แล้วไปกด edit ที่ไฟล์ helper.php ขึ้นมาแก้ไข

ไฟล์นี้อยู่ใน  /modules/mod_mainmenu/helper.php

แล้วค้นหาแถวที่เขียนว่า :
function buildXML(&$params)

แล้วแทนที่ด้วย
function buildXML($params)

หรือก็คือการลบเครื่องหมาย & ออกนั่นเองเพราะ php 5.3 ใช้เฉพาะเครื่องหมาย $ เท่านั้นก็ทำงานได้

แก้ไขเสร็จแล้ว save แล้วมากด f5 เพื่อ refresh ดูหน้าเว็บหลังแก้ไข ข้อความ warning นี้ก็จะหายไปค่ะ

วิธีแก้ปัญหา joomla 3.0.3 แสดงภาพไม่ได้ image url ติด php_flag magic_quotes_gpc Off On

Joomla 3.0.3 แสดงภาพไม่ได้ติดเครื่องหมายแบคสแลช \images/ และวิธีแก้ไขให้แสดงภาพได้

เว็บไซต์ที่ทำด้วย joomla version 3.0 ขึ้นไป เช่น 3.0.1  3.0.2 , 3.0.3 หากแสดงภาพไม่ได้ เมื่อมีการ save บทความ url ของภาพจะเพิ่มเครื่องหมาย backslash (แบ็คสแลช) \ ให้อัตโนมัติ ทำให้เว็บไซต์แสดงภาพไม่ได้

เมื่อคลิ๊กขวาดูที่ url ของภาพ จะเห็นเป็น \imange/mypic.jpg

ทำให้ภาพแสดงไม่ได้เนื่องจากมีเครื่องหมาย \ เกินมา

สาเหตุการแสดงภาพไม่ได้ของ joomla 3.0.x เกิดจาก

โฮสติ้งที่ใช้งานอยู่ตั้งค่า php_flag magic_quotes_gpc On เพื่อป้องกันการทำ SQL injection สำหรับการเขียนโค๊ดแบบเก่า

ใน php 5.3 จะตัด ฟังก์ชั่นนี้ออกไปแล้ว ดังนั้น ถ้าเครื่องไหนที่ติดตั้ง php 5.3 ไว้จะขึ้นเป็น  magic_quotes_gpc is deprecated

แต่ที่บางโฮสติ้งยังต้องเปิด On ไว้อยู่เนื่องจากยังมีเว็บไซต์ของลูกค้าในเครื่องบางท่านที่ยังเขียนโค๊ดแบบเก่าอยู่

ดังนั้น สำหรับเว็บไซต์ที่ทำด้วย joomla 3.0.x ขึ้นไป ซึ่งตัวโปรแกรม joomla รุ่นนี้ต้องการให้ปิดการใช้งาน magic_quotes_gpc นี้ออกไป (Joomla require php_flag magic_quotes_gpc Off ) เพื่อให้สามารถแสดงตำแหน่งภาพ ( images url) ได้ถูกต้อง โปรดทำดังนี้

การปิด magic_quotes_gpc ทำได้ 2 วิธีคือ

1. กรณีสามารถเข้าแก้ไขไฟล์ config ของ server ได้ ให้เข้าไปแก้ไปที่ php.ini ได้เลยโดย

nano /usr/local/lib/php.ini

แล้วเปลี่ยนแถว

php_flag magic_quotes_gpc On เป็น ==> php_flag magic_quotes_gpc Off

แล้ว service httpd restart

2. กรณีเข้าไปแก้ไขไฟล์ php.ini ของ server ไม่ได้

ให้ไปเพิ่มค่าเข้าไปที่ไฟล์ .htaccess แทน

กรณีใช้ DirectAdmin ก็เข้าไปที่ File manager

แล้วเลื่อนหาไฟล์ชื่อ .htaccess แล้วกด edit แล้วเลื่อนลงท้ายไฟล์

แล้วเพิ่ม php_flag magic_quotes_gpc Off  เข้าไปได้เลย

แล้วกด save

หากไม่พบไฟล์ .htaccess อยู่ในนี้ ก็สามารถสร้างขึ้นมาใหม่ได้ ด้วย โปรแกรม notepad แล้ว save เป็นชื่อ “.htaccess” ไม่มีนามสกุล

แล้วอัพโหลด .htaccess ไปไว้ในโฟลเดอร์ที่ติดตั้ง joomla 3.0.x ไว้ค่ะ

เมื่อแก้ไขค่า magic_quotes_gpc ให้เป็น Off ได้แล้ว

ก็ล็อกอินเข้าไปแก้ไขบทความของ joomla ที่เคยแทรกภาพไว้แล้วแต่แสดงไม่ได้ ลบภาพเดิมออกก่อน แล้วกด แทรกภาพใหม่

เมื่อ save แล้ว คราวนี้ระบบก็จะไม่ใส่เครื่องหมาย \ หน้าโฟลเดอร์ images ให้อัตโนมัติอีกแล้ว ภาพในบทความ joomla ของท่านก็จะแสดงได้ตามปกติค่ะ

 

วิธีแก้ปัญหา Fatal error: xcache_list() ใน joomla

หากเว็บ joomla ขึ้น error เช่น

Fatal error: xcache_list() [……..

in /home/…/domains/…/public_html/libraries/joomla/cache/storage/xcache.php on line 148

ให้เข้าไปเปิดไฟล์ กรณีเปิด file manager ให้เลื่อนหา

 ไฟล์ชื่อ configuration.php ของ joomla
แล้วมองหาแถวที่เขียนว่า

public $cache_handler = ‘xcache‘;
แล้วเปลี่ยน คำว่า xcache เป็น คำว่า file แล้ว save ค่ะ
public $cache_handler = ‘file‘;

ถ้ากด save แล้วขึ้น error ต่อว่า Could not save data. Error: Could not write to the configuration file

ให้เปลี่ยน perm (permission) ของไฟล์ configuration.php ให้เป็น 777 ก่อนค่ะ แล้วกด save  เมื่อ save เสร็จแล้ว อย่าลืมเปลี่ยน permission ของไฟล์กลับเป็นค่าเดิมคือ 644 นะคะ เพื่อความปลอดภัยคะ