สอบถามแนวทางการกำหนดเส้นทางของภาพเพื่อให้ภาพแสดงขึ้นมาครับ
ยึดไฟล์นี้เป็นหลัก
Code (PHP)
$filename = dirname(__FILE__) . '...';
Date :
2021-06-19 18:38:22
By :
TheGreatGod_of_Death
ถ้ามันต้องมาตามแก้ path เวลาเปลี่ยน server ทีหนึ่งก็ปวดหัวตายชัก
พยายามทำความเข้าใจ __DIR__ แล้วใช้ตัวนี้อ้างอิงจากตำแหน่งปัจจุบัน หรือใช้ค่าคงที่กำหนดจากไฟล์แรกที่เรียก เช่น
Code (PHP)
<?php
// index.php
if (!defined('ROOT_PATH')) {
define('ROOT_PATH', __DIR__);
}
require 'sub-files.php';
Date :
2021-06-19 19:02:09
By :
mr.v
เป็น Server เช่าครับ
upload ผ่าน filezilla
พอจะมีวิธีตรวจ path ที่ upload ผ่าน filezilla ไหมครับ
ว่า path คืออะไร
Date :
2021-06-20 11:54:34
By :
ajsudkedt
Code (PHP)
$filename = '/htdocs/behavior/images/'.$_SESSION["strStudentID"][$i] . '.jpg';
if (file_exists($filename)) {
$img = "/behavior/images/".$_SESSION["strStudentID"][$i].".jpg";
} else {
$img = "/behavior/images/default.png";
}
?>
ผมใส่ แบบนี้ขึ้นรูป default รูปจริงไม่ขึ้นครับ
Date :
2021-06-20 16:29:44
By :
ajsudkedt
Code (PHP)
if (!defined('ROOT_PATH')) {
define('ROOT_PATH', __DIR__);
}
if (!defined('FILE_PATH')) {
define('FILE_PATH', dirname(__FILE__));
}
echo 'ROOT_PATH => '.ROOT_PATH;
echo '<br>';
echo 'FILE_PATH => '.FILE_PATH;
echo ค่าออกมาดูครับ
ทำยังไงครับ
Server ที่ใช้เป็น Server เช่าครับ
upload ผ่าน filezilla ครับ
ประวัติการแก้ไข 2021-06-20 16:54:09 2021-06-20 16:54:39 2021-06-20 16:56:19 2021-06-20 16:57:20 2021-06-20 16:57:39
Date :
2021-06-20 16:53:07
By :
ajsudkedt
คุณทดลองสร้างไฟล์ขึ้นมาไฟล์หรือสองไฟล์ แล้วทดลองกับ __DIR__ และ __FILE__ รวมถึงอ่านคำสั่ง dirname() ให้เข้าใจก่อนดีกว่าว่าทั้งหมดมันคืออะไร อยู่ตรงไหนผลออกมาเป็นอย่างไร เรียกจากไฟล์ที่ถูก include แล้วเป็นอย่างไร อยู่ใน folder ย่อยจะออกมาเป็นอย่างไร
เอาให้มันเข้าใจว่ามันคืออะไรแล้วได้ผลยังไง มันไม่ยากเลยแค่ต้องขยันทดลอง มากๆหน่อย ทดลองหลายๆแบบ
ถ้าไม่เข้าใจมันก็จะมึนๆอยู่อย่างเนี้ย ทั้งที่มันก็ไม่ยากขนาดนั้นหรอกแค่ทดลองเอาหน่อยนึง พอมันอ๋อออแล้วก็จะสามารถเทียบเคียงต่อไปได้เองว่าจากตำแหน่งที่เราเขียนมือ จะทำยังไงให้มันสัมพันธ์กับไฟล์ที่เรียกโดยไม่ต้องมานั่งแก้ทุกๆครั้งที่ย้าย server
อย่างคห.4เขาให้ทดลองเขียนแล้วเอาผลมาดู คุณลองแล้วได้ผลยังไงก็บอกไป จะไปถามทำไมทำยังไงหรือ server, upload filzilla ฯลฯ มันไม่เกี่ยวอะไร ก็แค่ทดลองทำตามที่เขาบอกแล้วเอาผลมาให้ดู หรือถ้าจะไปไวพลิกแพลงเองได้คล่องแคล่วในภายหน้า ก็อย่างที่ผมบอก ทดลอง-ทดสอบเล่น ให้มากๆหน่อย สร้างไฟล์ทดลองโดยเฉพาะเลย ลองจนกว่าจะเข้าใจจึงเอามาประยุกต์ใช้
https://www.php.net/manual/en/function.dirname.php dirname()
https://www.php.net/manual/en/language.constants.magic.php __DIR__, __FILE__, magic constant ทั้งหลาย
Date :
2021-06-20 18:56:30
By :
mr.v
1 ที่ file index.php ไฟล์เริ่มต้น ของ เวป
ที่ ต้นไฟล์ บันทัดแรก
Code (PHP)
<?php
echo __DIR__; exit;
รู้แตำแหน่งไฟล์ เริ่มต้น แล้วลบออก
----------------------------------------------------------
2 สร้าง file include กำหนด constant สำหรับ path ที่เกี่่ยวข้องใช้งาน ไว้ folder ที่เดียวกันกับ index.php
ตั้งขื่อไฟล์ว่า global_include.php หรือชื่ออะไรก็ได้ที่เข้าใจง่าย หรือ เข้าใจยาก ก็ว่ากันไป
Code (PHP)
<?php
defind('rootPATH', __DIR__);
defind('imagePATH', __DIR__ . DIRECTORY_SEPARATOR .'imagepath');
defind('uploadPATH',__DIR__ . DIRECTORY_SEPARATOR . 'uploadpath');
----------------------------------------------------------
3 ที่ file อื่นๆ ให้ทำการ include ไฟล์ที่สร้างนี้
Code (PHP)
<?php
require_once 'path ที่ได้จากข้อ 1 ' . DIRECTORY_SEPARATOR . 'global_include.php';
ปล. __DIR__ เป็นคำสั่งที่ใช้แสดง path ของไฟล์ ที่แสดงโค๊ดนี้
ปล. อีกที จำไม่ได้ว่า มันเริ่มต้นใช้ ตั้งแต่ version ไหน ค้นหาเอาเองเด้อ
ถ้า php version ที่ใช้ ไม่ซับพอร์ต ก็ให้ใช้
define('__DIR__', dirname(__FILE__)); ก่อน
ทดลองก่อน นะว่า มันมี / ต่อท่ายไฟล์มาหรือเปล่า ไม่แน่ใจจำไม่ได้แล้ว น่าจะทดลองเองได้นะ
ประวัติการแก้ไข 2021-06-20 19:02:16 2021-06-20 19:06:55
Date :
2021-06-20 18:59:02
By :
Chaidhanan
สมมุติว่าโครงสร้าง folder แบบนี้
/ (จะเรียกจากตรงนี้ว่า root)
|--main.php (/main.php)
|--a
|--|---aa (/a/aa)
|--|---|----file01.php (/a/aa/file01.php)
ถ้าหาก echo __DIR__; ที่ไฟล์ main.php มันจะได้ /path/ที่ติดตั้ง/(root) ซึ่งมีไฟล์ main.php อยู่
ถ้าหาก echo __DIR__; ที่ไฟล์ /a/aa/file01.php มันจะได้ /path/ที่ติดตั้ง/(root)/a/aa ซึ่งมีไฟล์ file01.php อยู่
การจะไต่ออกมาหาไฟล์ main.php จากตำแหน่งของไฟล์ file01.php จะต้องขึ้นไป 2 ระดับ. ถ้าหากเป็น php รุ่นเก่า (>5.2 && <7.0) จะต้องใช้ dirname(dirname(__DIR__)) แต่ถ้าหากเป็น php >= 7.0 จะใช้แบบนี้ได้เลย dirname(__DIR__, 2)
ค่าคงที่ __DIR__ จะไม่มี slash (/), backslash (\) ต่อท้าย จะต้องเขียนเพิ่มเอาเองไม่อย่างนั้นมันหาพาธไม่เจออีก.
ทีนี้มันก็วกกลับไปหาจขกท.อีก คือต้องลองว่าตำแหน่งที่จะเขียนมันอยู่ตรงไหน ไฟล์อยู่ตรงไหน จะไต่ขึ้นไต่ลงไปกี่ระดับ คนอื่นรู้ไม่ได้เพราะไม่ได้เปิด server, ftp เข้าไปดู.
อีกเรื่องที่สังเกตุ รูปที่เอาไปใช้หวังว่าคงไม่ได้เอาไปใส่ <img src="..."> เลย เพราะมาเป็น full path แบบนั้นเครื่องตัวเองอาจดูได้ แต่เครื่องคนอื่นดูไม่ได้ การใช้ URL รูปควรจะต้องเป็น http:// หรือ https:// หรือสั้นๆก็เริ่มต้นด้วย //.
ประวัติการแก้ไข 2021-06-21 00:23:30 2021-06-21 00:24:40
Date :
2021-06-21 00:22:29
By :
mr.v
แก้ปัญหาได้แล้วครับ
ขอบกราบขอบพระคุณ
ท่าน mr.v
ท่าน Chaidhanan
ท่าน คนธรรมดา ไม่พิเศษ
และทุก ๆ ท่านที่ช่วยชี้แนะ
ได้ความรู้ใหม่เพิ่มขึ้นเลยครับ
ขอบพระคุณจริง ๆ ครับ
เว็บบอร์ดนี้มีประโยชน์มาก ๆ ครับ
Date :
2021-06-21 06:01:05
By :
ajsudkedt
ไม่เข้าใจ root path
ไปเจอหลายๆ OS จบเลย!!!
เขียนอย่างไรโดยที่เขียนเสร็จแล้ว Deploy ได้เลย?
Date :
2021-06-21 09:05:40
By :
Guest
Load balance : Server 04