พอไม่ได้มาอัพ เหมือนขาดแหล่งจดไอเดียเลยอะ
วันนี้ก็มาจดเพิ่ม (ผมไม่ได้ทำเพื่อใครเลย เพื่อตัวเองทั้งนั้น

)
พอดีมีเคสว่า เดิมค่าพาทเป็นแบบนี้
ซึ่งผมเอาไว้เขียนไฟล์ลงตำแหน่งนั้น ในความหมายบรรทัดนี้คือย้อนไป 2 โฟลเดอร์
ซึ่งบน localhost มันทำงานได้ปกติ แต่พอใช้กับโฮสจริง... เออ.. เอ๋อเลย..
เอ๋อเหรอ Error นั้นเอง

[24-Jan-2008 00:00:44] PHP Warning: fopen(../../newfile.php in /home/myhost/public_html/dir/dat/write.php on line 26
[24-Jan-2008 00:00:44] PHP Warning: fwrite(): supplied argument is not a valid stream resource in /home/myhost/public_html/dir/dat/write.php on line 27
ปัญหาก็เพราะ ผมไม่ได้อ้างพาทเขียนไฟล์แบบเต็มๆ
นับ 5 วิ ผมนึกได้ ต้องเขียน php ไว้ public_html มาอ่านพาท แล้วเอาไปกรอกในคอนฟิก...
วิธีนี้ลำบากแฮะ ด้วยความขี้เกียจทำบ่อย เลยนึกต่อ จนได้คำตอบว่า
$path = preg_replace("#([^/]+/){2}(".basename(__FILE__).")$#", "", str_replace("\\", "/", __FILE__));
คือขั้นแรกก็เอาค่า __FILE__ มาใช้
แก้ \ เป็น / ก่อน ด้วย str_replace (สำหรับกรณีโฮสวินโดวน์)
ต่อมาก็ preg_replace เลย โดยเขียนตัดเอาชื่อโฟลเดอร์ต่อท้าย 2 โฟลเดอร์ืืืทิ้งซะ!
ปัญญานี้ก็แก้ได้เรียบร้อย
ต่ออีกนิด
ทำไมผมใช้ __FILE__ ในเมื่อ
หลายคนคงนึกถึงตัว $_SERVER['PHP_SELF'] แต่ความต่างมันก็คือ
$_SERVER['PHP_SELF'] จะอ้างจากชื่อไฟลหลักที่ทำงาน อย่างถ้ามันไปอยู่ใน index2.php
แต่เราเรียก index.php แล้วไป include index2.php แต่ยังไง $_SERVER['PHP_SELF'] มันจะอ้างที่ index.php อยู่ครับ
แต่กลับกัน __FILE__ จะอ้างที่ index2.php แทน คือมันจะอ้างไฟล์ที่คำสั่งมันอยู่นั้นเอง
:

:

[อัพเดต!]