• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چگونه فایلی در پوشه a که در دایرکتوری b هست رو در فایلی در دایرکتوری y باز کنم؟
#1
سلام و چند ساعت مونده به سال تحویل Angel ، پارسال سال تحویل رو هم با شما بودیم Cool،
باز هم یک سوال و مشکل دیگه! Blush
یک فایل داریم بنام op در روت/پوشه a/پوشه b که می خوام اون رو در فایلی که در روت/پوشه x/پوشه y/پوشه m هست اینکلود کنم. خب حتماً از این روش استفاده می کنم:
کد پی‌اچ‌پی:
include_once( 'a/b/op.php' ); 
اما این روش خطا میده چون include فرض می کنه فایل op.php در مسیر پوشه x/پوشه y/پوشه m/پوشه a/پوشه b قرار داره. در صورتی که همچین آدرسی درست نیست پس با خطای زیر مواجه میشیم:
نقل قول:failed to open stream: No such file or directory
بنظر شما برای حل این مشکل چیکار می تونم بکنم؟ خیلی دنبال تابعی گشتم که مسیر دایرکتوری اصلی یعنی روت رو بده اما همشون ایراد هایی داشتند. مثلاً توابع dirname و getcwd

ممنونتون میشم راهنمایی کنید Sleepy
غایب
  پاسخ
تشکر شده توسط :
#2
فهمیدم باید چیکار کنم اما نمیدونم از نظر امنیت و سرعت چقدر خوبه و آیا راه دیگه ای هم براش هست یا نه. من از کد زیر استفاده می کنم:

کد پی‌اچ‌پی:
define'__dirname__'$_SERVER['SCRIPT_NAME'] ); 

که در فایلی که __dirname__ شناخته شده نیست کد بالا رو می نویسم و بعد برای مثال بصورت زیر فایل op رو باز می کنم:

کد پی‌اچ‌پی:
include_once( __dirname__ 'a/b/op.php' ); 
غایب
  پاسخ
تشکر شده توسط :
#3
بسم الله الرحمن الرحیم
سلام
از دوتا نقطه هم می تونی استفاده کنی / اینطوری:
کد:
../../../a/b/op.php
به ازای هر .. ( دوتا نقطه یه پوشه به عقب می ره )

که البته از آدرس ;کامل هم می تونید استفاده کنید
مثلا:
کد:
c:\\...
و یا:
کد:
/var/www/...
  پاسخ
تشکر شده توسط : cyletech molana
#4
راه درست اینی هستش که حسین گفت
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط : hosseintdk775
#5
خب حسین و محمد جان. نظر شما اینه . درسته. و منم قبولش دارم ولی شما فرض کنید دایرکتوری وجود داره که اون فایل هزارمین فایلش هست و در صدمین پوشه قرار داره. اینطوری باید صد تا دو نقطه قرار بدیم؟ البته نگین که حالا که شما (من) اینقدر فایل و پوشه ندارید پس موردی نداره! همیشه باید تعداد بالا مورد نظر باشه تا همه چی به خوبی احساس بشه. شاید بگید از راه دادن آدرس کامل استفاده کنم؟! خوب اینم یکجا جواب نمیده! الان من همون هزار تا فایل رو دارم و تو نصفشون اینکود استفاده کردم و همه رو قبل از اینکه بفرستم رو سرور رو لوکال هاست داشتمشون. پس من باید الان پونصد تا فایل رو ویرایش کنم؟ هیچکدوم از اینا درست و بصرفه نیست! از نظر من البته و نظر شما رو هم دونستم.
اون چیزی که من گفتم بدون مشکل چه رو سرور و چه لوکال هاست جواب میده اما سرعت و امنیتش برام مهمه. اگر شما مشکلی در اون روشی که گفتم سراغ دارید به منم بگید لطفا Heart شب خوبی داشته باشید. آخه الان شبه Cool
غایب
  پاسخ
تشکر شده توسط :
#6
یه سال پیر تر شدیم! آی خدا ... Big Grin

--
خواستم یه تصویر ( همون عکس Wink ) بزارم اما نه اینجا قبول کرد نه تونستم جایه دیگه upload کنم!!

---
هرچند پوشه می خوای داشته باش
بلاخره که چی ...
از روت آدرس بده! ( شعر بود ها! )

بلاخره از یه جایی برنامه تو شروع می شه!
یعنی تمام فایل هات تویه یه قسمتی از ادرسشون با هم مشترکن!
مثلآ:
کد پی‌اچ‌پی:
$path1 'C:\xampp\htdocs\mySoftWare\x\y\m\index.php';
$path2 'C:\xampp\htdocs\mySoftWare\a\b\op.php'
که تو این مثال اون قسمت مشترک می شه:
کد:
C:\xampp\htdocs\mySoftWare\
کافیه این قسمت از ادرس رو بدست بیاری و تو همه جای برنامت برای آدرس دهی استفاده کنیش. این امن ترین راهی که من می شناسم!
نقل قول:شما فرض کنید دایرکتوری وجود داره که اون فایل هزارمین فایلش هست و در صدمین پوشه قرار داره. اینطوری باید صد تا دو نقطه قرار بدیم؟
این چطور برنامه ایی؟
برای یه برنامه که قراره همچین اتفاقی بیفته بنظرم باید یه چیزی شبیه موتور وجود داشته باشه و تمام ادرس هارو محاسبه کنه
تعمیم یه مساله کاره خوبیه اما هرگز عقلی نیست یه مساله اونقد تعمیمش داد تا به اصل قضه فراموش یا نقض بشه!

نقل قول:الان من همون هزار تا فایل رو دارم و تو نصفشون اینکود استفاده کردم و همه رو قبل از اینکه بفرستم رو سرور رو لوکال هاست داشتمشون. پس من باید الان پونصد تا فایل رو ویرایش کنم؟ هیچکدوم از اینا درست و بصرفه نیست! از نظر من البته و نظر شما رو هم دونستم.
این بستگی به این داره که برنامه تو چی هستش!
مثلآ نمی شه برای یه برنامه بلاگ ساده این همه وارد پیچیده گی هایی شد که اصلا استفاده نداره!!!

مساله اینه : برنامت چیه؟ می خوای چی کار کنی؟
--
دل خوش سیری چند ...
  پاسخ
تشکر شده توسط : cyletech
#7
محمد امین جان مهم برنامه من نیست ، اگر من سوالی می کنم فقط برای اینه که اطلاعاتم بالا بره و بدونم دیگران از چه روش هایی استفاده می کنن. فقط همین. Tongue
غایب
  پاسخ
تشکر شده توسط :
#8
(۱۳۹۰ فروردین ۰۳, ۰۹:۱۰ ب.ظ)cyletech نوشته: محمد امین جان مهم برنامه من نیست ، اگر من سوالی می کنم فقط برای اینه که اطلاعاتم بالا بره و بدونم دیگران از چه روش هایی استفاده می کنن. فقط همین. Tongue

درسته علیرضا جان .
منم بگم این سوال اشتباهه و از همینجا آب پاکی رو بریزم رو دستت Big Grin Wink

--
دل خوش سیری چند ...
  پاسخ
تشکر شده توسط :
#9
نقل قول:منم بگم این سوال اشتباهه و از همینجا آب پاکی رو بریزم رو دستت
اشتباه که نیست! پرسیدم چند تا راه برای آدرسی دهی وجود داره. خودم یک راه معرفی کردم و شما هم چند تا راه. من ایراد گرفتم از راه های شما ، شما هنوز نگفتید ایراد راه من چیه! با دلیل و مدرک البته
غایب
  پاسخ
تشکر شده توسط :
#10
نقل قول:اشتباه که نیست! پرسیدم چند تا راه برای آدرسی دهی وجود داره. خودم یک راه معرفی کردم و شما هم چند تا راه. من ایراد گرفتم از راه های شما ، شما هنوز نگفتید ایراد راه من چیه! با دلیل و مدرک البته
ها؟! Big Grin باشه ...
فقط لطف کنید بگید که شما چه راه حلی رو پیشنهاد دادید! ممنون می شم Dodgy

بیا همچین راه حلی هم هست:
لینک : http://www.geeksengine.com/article/php-i...-path.html
لینک : http://php.net/manual/en/function.set-include-path.php

راحل درست تر اینه که باید دونست برنامه چیه! وگرنه راه درست همون همونه که حسین گفت. من گفتم ...
  پاسخ
تشکر شده توسط : cyletech


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان