سلام.
BASE_URL همونطور که مشخصه یک url با پروتوکول http هست و مربوط به مرورگر کاربر هست که آدرسی رو بخونه. مثه فایل های js و css که مرورگر کاربر باید اون آدرسو بخونه تا style و js روی مرورگر کاربر لود شن.
ولی داخل فایل های PHP برای اینکلود کردن فایل های دیگر، از مسیر دقیق یا نسبی درون هارد سرور استفاده میشه!
کاربردشون با هم متفاوته. یکی مربوط به سمت client هست و دیگری مربوط به سمت server
برای بدست اوردن path ثابت های جادویی __DIR__ و __FILE__ وجود داره.
* ثابت __DIR__ مسیر دایرکتوری فایلی که داخلش هستیو برمیگردونه.
* ثابت __FILE__ مسیر دایرکتوری + نام فایلی که داخلش هستیو برمیگردونه.
ثابت __DIR__ معادل دستور زیر هست:
dirname(__FILE__);
برای نمایش خروجی و تفاوتشون، حالا همین دستوراتو داخل پروژه ی ۷todo در مسیر ۷todo/bootstrap/constants.php چاپ میکنم:
<?php
echo __DIR__;
//C:\wamp64\www\7todo\bootstrap
echo "<br/>";
echo dirname(__FILE__);
// C:\wamp64\www\7todo\bootstrap
echo "<br/>";
echo __FILE__;
// C:\wamp64\www\7todo\bootstrap\constants.php
echo "<br/>";
خب با توجه به __DIR__ که به دایرکتوری bootstrap اشاره میکنه، اگر یک دایرکتوری به عقب برگردیم به ROOT پروژه میرسیم. این دو تا دستورو با هم مقایسه کنید:
<?php
echo dirname(__FILE__);
// C:\wamp64\www\7todo\bootstrap
echo "<br/>";
echo dirname(dirname(__FILE__));
// C:\wamp64\www\7todo
بنابراین دراین پروژه BASE_PATH به این شکل در میاد:
define('BASE_PATH', dirname(dirname(__FILE__)) . '/');
با سلام
اینکه فایل های php ما از طریق مرورگر قابل دسترسی باشند یک مشکل امنیتی بزرگه که میتونه به راحتی کدهای مارو لو بده به خاطر همینه که ما از URL برای فراخوانی فایل هامون استفاده نکردیم، البته اینو هم بگم که بازهم فایل ها قابل دسترس خواهند بود با ترفندهایی که یکیش رو استاد آوند گفتند میشه جلوشو گرفت.
برای اینکه روی هاست فایل ها را مسیردهی کنیم باید root پروژه خودمونو تو هاست پیدا کنیم، برای مثال در سی پنل public_html/your_domain است که پوشه public_html و درون آن نام دامنه ما که پروژه ما درون آن قرار گرفته است ریشه پروژه ما است.