ปัญหากับ Relative path ใน IIS

คือว่ามีปัญหาในการเซ็ท relative path ใน IIS ค่ะ

เปิดใช้งาน Enable parent paths ใน IIS แล้ว แต่เวปก็ยังมองไม่เห็น virtual path อยู่ดี

เช่น file_exists($_GET[‘file’]) มันไม่เจอค่ะ ต้อง file_exists(“D:\Hosting\domain.com\www\filename”) ถึงจะใช้ได้

ไม่ทราบว่าใครเคยเจอปัญหาแบบนี้บ้างคะ ลอง google ดูเห็นว่าเป็นที่ permission ก็ลงทำตามแล้วแต่ยังไม่ได้

Windows 2003 + IIS6 + Websitepanel

ขอบคุณค่ะ

$_GET[‘file’]

มันต้องส่งมาแบบ get น่ะครับ

xxx.php?file=D:\Hosting\domain.com\www\filename

ลองให้มัน echo $_GET[‘file’]; ออกมา

ค่ะ ส่งแบบ GET

แต่อยากใช้แบบนี้ค่ะ โดยที่ไม่ต้องระบุ Real Path แต่มันไม่ได้

xxx.php?file=images/filename

สาเหตุที่อยากใช้แบบนี้เพราะ หลายๆคนคงเขียน code แบบไม่ระบุ path หรือไม่ใส่ dirname(FILE) ถ้าย้าย Hosting มาที่นี่คงต้องแก้โค้ดใหม่

พอจะมีวิธีมั๊ยคะ

file นี้เป็นตัวแปรที่รับ path ของ file หรือว่า เป็นตัวแปนที่รับ file มาครับ

path ค่ะ

ตัวอย่างค่ะ

แล้วไฟล์ thumbnail.php รับค่า $file มาเพื่อ get thumbnail

แต่ใน IIS ไม่สามารถใช้ relative path เพื่อรับค่า path ‘images/products/detail/image.jpg’ ได้ค่ะ

ต้องมาใส่ค่าใน thumbnail.php เพิ่มเป็น

$filename=dirname(__FILE__)."/".$_GET['file']

หรือ

$filename=$_SERVER['DOCUMENT_ROOT']."/".$_GET['file']

หรือ

$filename="D:\Hosting\domain.com\www\".$_GET['file']

ปรกติใน localhost สามารถเรียก Relative Path โดนตรงได้เลย

มีวิธีการไหนบ้างคะที่สามารถทำให้เรียกแบบนี้ได้

$filename = $_GET['file']

ใน ASP Server.MapPath(request.QueryString(“file”)) ก็ไม่เจอ

ลองสร้าง thumbnail.php ใหม่ดูครับ

เอาแค่

<?phpinfo()?> พอครับ

http://thaiwindowshosting.com/info.php

แก้ code เป็นตามนี้น่าจะดีที่สุด ใช้ได้ทุกเครื่อง

$filename=$_SERVER[‘DOCUMENT_ROOT’]."/".$_GET[‘file’]

ดูเรื่องความปลอดภัยด้วยนะครับ รับค่าไฟล์จาก url ตรวจสอบดีๆ

ขอบคุณสำหรับความรู้ครับ

ขอบคุณทุกความเห็นค่ะ

สรุปคือว่า IIS6 2003 ไม่สามารถเรียกใช้งาน file แบบ Relative Path ได้ ใช่หรือเปล่าคะ ต้องระบุ Path เอง งานนี้ แก้ไฟล์เป็นร้อยตัวเลย แง้ว…