PDA

View Full Version : تغییر مسیر



googoli
چهارشنبه 19 تیر 1392, 09:27 صبح
با سلام
من درون سایت که دارم طراحی می کنم پوشه های مختلفی دارم
از قبیل
admin
includes
images
script
,.......
من درون فایل ایندکس شاخه ادمین یه تکه کد دارم به شکل زیر که یک فایل رو فرخوانی کردم

require("../includes/config.php");
زمانی که روی هاست این رو آپلود می کنم اصلا تنظیمات رو نمی تونه فرخوانی کنه
دلیلش هم به نظر من این هست که path من رو همون شاخه ادمین نشون میده و به همین خاطر نمی تونه فایل هایی که من دارم از شاخه includes فرخوانی میکنم رو لود کنه
میشه شما دوستان راهنمایی کنید که من باید چکار کنم

googoli
چهارشنبه 19 تیر 1392, 10:55 صبح
من کلاسی config رو که فرخوانی میشه در ابتدا اینجا میذرام
106982

googoli
چهارشنبه 19 تیر 1392, 19:10 عصر
کسی نیست من را یاری کند ؟

MMSHFE
چهارشنبه 19 تیر 1392, 19:31 عصر
دوست گرامی، توی فایل index.php این کد رو بگذارین:

if(!defined('ROOT')) { define('ROOT', str_replace('\\', '/', dirname(__FILE__))); }
و از این به بعد، مسیرها رو توی فایلهاتون بطور مطلق بدین. مثال:

require_once ROOT . '/includes/config.php';

googoli
چهارشنبه 19 تیر 1392, 20:01 عصر
ضمن تشکر از شما اقای شهرکی
من دستوراتی که شما فرمودید رو روی هاست گذاشتم و خروجی به صورت زیر بود

/home/payamcom/domains/mysite.ir/public_html/admin/includes/starter2.phpمقدار root هم با توجه به فرمایشات شما مقدارش

/home/payamcom/domains/mysite.ir/public_html/admin هست
ولی من خروجی زیر رو می خوام

/home/payamcom/domains/mysite.ir/public_html/includes/starter2.php

MMSHFE
چهارشنبه 19 تیر 1392, 20:21 عصر
پس این کد رو بگذارین:

if(!defined('ROOT')) { define('ROOT', str_replace('\\', '/', dirname(dirname(__FILE__)))); }

googoli
چهارشنبه 19 تیر 1392, 20:45 عصر
من دستورات شما رو مو به مو انجام دارم ولی وقتی به فایل starter2 رجوع میکنه خط اول کد زیر رو اجرا می کنه و دیگر هیچ کار دیگه انجام نمیشه



include('Configuration.php');
$configuration=new configuration(); echo '13134242';
$configuration->preload();

به نظر شما می تونه ایراد از کجای کار باشه ؟

MMSHFE
چهارشنبه 19 تیر 1392, 20:50 عصر
تمام دستورات include و require و... رو باید اصلاح کنید. مثلاً بنویسید:

include ROOT . '/includes/Configuration.php';

googoli
چهارشنبه 19 تیر 1392, 21:44 عصر
من از دستور require یک بار بیشتر استفاده نکردم اون هم در فایل index بود که اون هم به فرمایش شما به include تبدیل کردم
ولی باز به هیچ نتیجه ای نرسیدم
به خط زیر که میرسه اصلا هیچ کاری انجام نمیشه یعنی اصلا یا کلاس رو نمیشناسه یا اینکه مسیر کلا اشتباهه

$configuration=new configuration(); echo '13134242';


خودمم هم اعصابم خورد شده دیگه
فایل ایندکس من الان به شکل زیر هست


<?php
if(!defined('ROOT'))
{
define('ROOT', str_replace('\\', '/', dirname(dirname(__FILE__))));
}

include ROOT . '/includes/starter2.php';


حتی از دستور زیر هم استفاده کردم


include(ROOT.'/includes/Configuration.php');

MMSHFE
پنج شنبه 20 تیر 1392, 08:11 صبح
آدرس سایت و ساختار پوشه های داخلش رو بگین تا ببینیم مشکل از کجاست.

googoli
پنج شنبه 20 تیر 1392, 11:36 صبح
جناب شهرکی اطلاعاتی رو که خواسته بودید براتون پیام خصوصی کردم

googoli
پنج شنبه 20 تیر 1392, 20:57 عصر
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه:

MMSHFE
جمعه 21 تیر 1392, 14:20 عصر
ببینید، منظورم من این نبود که بجای require از include استفاده کنید یا برعکس. منظورم این بود که توی فایل index.php این کد رو قبل از همه کدهای دیگه اضافه کنید:

if(!defined('ROOT')) { define('ROOT', str_replace('\\', '/', dirname(__FILE__))); }
و توی تمام دستورات include و require و include_once و require_once مسیر رو بصورت مطلق بدین. مثلاً توی خط بعدی توی همون index.php بنویسید:


define('INCLUDES', ROOT . '/includes');
require_once INCLUDES . '/starter.php';

یا توی خط اول starter.php بنویسید:

require_once INCLUDES . '/configuration.php';
نکته: بهتره ثابتها رو با حروف بزرگ بنویسید.

googoli
جمعه 21 تیر 1392, 15:11 عصر
خیلی ممنون از راهنمایی های شما جناب شهرکی
ولی باز هم حل نشد
من احتمال میدم یه مشکلی توی کد نویسی خودم باشه
چون وقتی فایل starter رو فرخوانی می کنم بدون مشکل اجرا میشه ولی starter2 که یک (سیو از) از همون فایل هست اجرا نمیشه