PDA

View Full Version : مسیر دهی فایل ها در همه فولدر ها با PHP



realAnvari
سه شنبه 02 خرداد 1396, 15:48 عصر
سلام ؛

دوستان من مبتدی هستم در پی اچ پی , ممنون میشم کمکم کنید تو این مورد .

من یه سی ام اس دارم خودم مینویسم . توی این سی ام اس , میخام ادرس دهی کنم . ولی با مشکل برخوردم .
مثلا :
145290

اگه من فایلی با ادرس core/init.php را به فایل ایندکس اصلی روت بدم مشکلی پیش نمیاد . اما اگر این فایل را الصاق کنم به پوشه ادمین و یا پوشه اینکلود . دیگه اونوقت نمایش نمیده و این ارور را میده :
Warning: include(core/database/connect.php): failed to open stream: No such file or directory in C:\xampp\htdocs\AOC2\core\functions\title.php on line 2

Warning: include(): Failed opening 'core/database/connect.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\AOC2\core\functions\title.php on line 2

چطور میتونم یک مسیر دینامیک داشته باشم که همه جای سی ام اس کار کنه ؟

plague
سه شنبه 02 خرداد 1396, 18:37 عصر
یه مسیر دهی نسبی داریم یه مسیر دهی مطلق
مسیر دهی نسبی یعنی نسبت به مکانی که الان توش قرار داریم بخایم آدرس بدیم
مسیر دهی مطلق یعنی از یک مکان ثابت که همه زیر مسیر ها اون رو بشناسن

شما الان داری نسبی آدرس دهی میکنی یعنی فایل title.php داره توی فولدر های اطرافش دنبال فولدر core میگرده که مشخصا همچین فولدری رو نمیبینه چون اصلا توی یک لول دیگه قرار داره اون
اگه بخای نسبی آدرس بدی باید اول یه فولدر بیای عقب تا توی core بری بعد بر تو دیتابیس یعنی اینجوری میشه


../database/connect.php
یا اینکه میتونی آدرس مطلق از ریشه دایکتوری بدی که در همه آدرس ها صحیح خواهد بود مثلا تو ویندوز ریشه دایرکتوری میشه درایو c (اگه ومپ رو تو درایو c نصب کردی )

با

$_SERVER['DOCUMENT_ROOT']

میتونی ریشه رو بدست بیاری و بچسبونی به اول آدرس هات بهتره یه فاکنکشن بنویسی یا یه ثابت که این رو هی نخاد تایب کنی


https://stackoverflow.com/a/344853/590589

realAnvari
سه شنبه 02 خرداد 1396, 19:36 عصر
یه مسیر دهی نسبی داریم یه مسیر دهی مطلق
مسیر دهی نسبی یعنی نسبت به مکانی که الان توش قرار داریم بخایم آدرس بدیم
مسیر دهی مطلق یعنی از یک مکان ثابت که همه زیر مسیر ها اون رو بشناسن

شما الان داری نسبی آدرس دهی میکنی یعنی فایل title.php داره توی فولدر های اطرافش دنبال فولدر core میگرده که مشخصا همچین فولدری رو نمیبینه چون اصلا توی یک لول دیگه قرار داره اون
اگه بخای نسبی آدرس بدی باید اول یه فولدر بیای عقب تا توی core بری بعد بر تو دیتابیس یعنی اینجوری میشه


../database/connect.php
یا اینکه میتونی آدرس مطلق از ریشه دایکتوری بدی که در همه آدرس ها صحیح خواهد بود مثلا تو ویندوز ریشه دایرکتوری میشه درایو c (اگه ومپ رو تو درایو c نصب کردی )

با

$_SERVER['DOCUMENT_ROOT']

میتونی ریشه رو بدست بیاری و بچسبونی به اول آدرس هات بهتره یه فاکنکشن بنویسی یا یه ثابت که این رو هی نخاد تایب کنی


https://stackoverflow.com/a/344853/590589

اون ادرس اصلی رو میشناسه که بهش دادم .

اما مشکل اینجاست که مثلا من توی یه فایلی به اسم init.php یه اینکلود کردم فایل دیتابیسم رو . الان وقتی این فایل init رو که فراخوانی میکنم توی ایندکس کار میکنه . اما توی ادمین فولدر کار نمیکنه . میگه نمیشناسم .

من اون لیک که دادین رو هم خواندم .

ممنون میشم یه راهنمایی بهتر کنید . یا اگه مقدور است اون فانکشن را بنویسید یا نمونش را بدین من بنویسم .

اخه مشکلم تو همه فایل ها است . نه یکی دو تا .

plague
سه شنبه 02 خرداد 1396, 22:12 عصر
شما خوندی 2-3 خط اولی که نوشتم رو ؟ توی ایندکس کار میکنه برای اینکه آدرس نسبت به فایل ایندکس درسته
توی init.php کار نمیکنه برای اینکه آدرس نسبت به اون درست نیست
فرض کن یه خونه داری با 5 تا اتاق
اگه تو اتاق شماره 4 باشی کسی ازت بپرسه چجوری برم به اتاق شماره 5 شما آدرس میدی 1 اتاق برو به سمت راست مثلا
اگه بری تو اتاق شماره 2 کسی ازت همون سوال رو بپرسه دیگه آدرس : 1 اتاق برو سمت راست به اتاق 5 نمیرسه و آدرس غلطه و باید آدرس رو تغییر بدی

راهش اینه که بجای اینکه آدرس رو نسبت به مکان فعلیت بدی از یه مکان ریشه که همه بشناسنش مثلا از دم در خونه شروع کنی مثلا : از دم در خونه 5 تا اتاق میری سمت راست
دیگه این آدرس هرجا بری صحیحه و به اتاق 5 میرسه

آدرس ریشه سایت رو توی این داری (همون در خونه )

$_SERVER['DOCUMENT_ROOT']


حالا کافیه آدرس فایلت (اتاق) رو بچسبونی بهش تا یه آدرس مطلق از اون فایل بدست بیاری

realAnvari
سه شنبه 02 خرداد 1396, 22:38 عصر
بله همه را خواندم و متوجه شدم . اما منم همین راهی که گفتیم رو رفتم و بهش ادرس را دارم . ولی بازم نتونست بخونه .

اینم ارورش :
Warning: require(C:/xampp/htdocs/core/database/connect.php): failed to open stream: No such file or directory in C:\xampp\htdocs\project\core\init.php on line 5

Fatal error: require(): Failed opening required 'C:/xampp/htdocs/core/database/connect.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\project\core\init.php on line 5

و اینم کد داخل init.php


<?phpsession_start();//error_reporting(0);
require $_SERVER['DOCUMENT_ROOT']. '' . '/core/database/connect.php';require $_SERVER['DOCUMENT_ROOT']. '/core/functions/general.php';require $_SERVER['DOCUMENT_ROOT']. '/core/functions/users.php';
$errors = array();
?>

مشکل اینجاست که این کدی که دادین میره از رو درایو C پیدا میکنه . اما پی اچ پی نیاز به سرور داره و باید با ادرس لوکال هاست و نام پروژه باشه ادرس . امیدوارم متوجه منظورم شده باشید .

plague
چهارشنبه 03 خرداد 1396, 00:04 صبح
اسم فولدر سایتت رو هم باید بزاری توی آدرس
اگه آدرسی که تو اررور اومده رو نگاه کنی متوجه میشی که چی کمه


مشکل اینجاست که این کدی که دادین میره از رو درایو C پیدا میکنه . اما پی اچ پی نیاز به سرور داره و باید با ادرس لوکال هاست و نام پروژه باشه ادرس . امیدوارم متوجه منظورم شده باشید .

خیر اگه قرار باشه از آدرس Http اینکلود کنی فایل ها رو چی باعث میشه یه سایت خارجی فایل های شما رو اینکلود نکنه ؟
سرور رو با وب سروس قاطی نکن
شما از طریق آدرس localhost درخواست میفرستی به سرور که فلان فایل رو میخام
کدا روی سرور اجرا میشن که یک کامپیوتره که درایو و فولدر و فایل داره (حداقل تو ویندوز )
این فایل ها موقع اجرا شدن باید بتونن همدیگه رو پیدا بکنن از طریق آدرس دهی که شامل این فولدر ها و درایو ها میشه
خروجی که از اون اجرا به دست میاد برای شما فرستاده میشه