How to : แก้ปัญหา JFolder::create: Path not in open_basedir paths

joomla

ปัญหาที่ผมเจอเมื่อเอา Joomla จาก localhost ขึ้นบนโฮสเพื่อออนไลน์ คือ ถึงแม้ permission จะเป็น writable หมดแล้ว (Chmod 777)

แต่เมื่อติดตั้ง module หรือ component ต่าง ๆ ก็ยังติด Error บางตัวอยู่ เช่น

JFolder::create: Path not in open_basedir paths

หรือ

JFolder::create: Could not create directory

Warning! Failed to move file.
เหล่านี้ด้วยวิธีการของผมเอง ผมพบวิธีแก้ต่อไปนี้ครับ ( การตั้งเป็น ./logs  ./tmp บางครั้งใช้ไม่ได้ผล)

เข้าหน้า Administrator แล้วไปที่ Help >> System Info

  1. Safe mode ควรจะเป็น  Safe Mode : Off
  2. Open basedir ควรจะเป็น Open basedir : none
  3. ดู Real path ของโฮสได้ที่ Cache Directory (ซึ่งแต่ละโฮสจะไม่เหมือนกัน) เพื่อที่จะมาใส่ที่ Log Directory ($log_path) และ Temp Directory ($tmp_path) ให้เหมือนกัน ในลักษณะดังรูป
$log_path-joomla
$log_path-joomla

หมายเหตุ : ข้อ 1 และ 2 ต้องแจ้งโฮสให้แก้ให้เราครับ

หากทำวิธีที่กล่าวมานี้แล้วยังไม่สามารถแก้ปัญหาได้มีวิธีสุดท้ายคือ …

แก้ไฟล์

/Joomla_root/libraries/joomla/filesystem/folder.php

แล้วหา ตัวแปรตามด้านล่าง
$obd = ini_get(‘open_basedir’);

แล้วให้ใส่ Comment ออก
//$obd = ini_get(‘open_basedir’);

เป็นการบอกให้ Joomla ไม่ต้องเช็ค open_basedir แต่ไม่แนะนำให้แก้ libraries นะครับ