2016-11-10 4 views
0

Я новичок в PHP. Я смотрел документацию, и у меня проблемы. У меня многостраничный сайт PHP, над которым я работаю. У меня возникла проблема с относительными путями (PHP Relative Path Issues) и указана на следующий URL-адрес (PHP include relative path). Я хочу использовать что-то похожее на следующий фрагмент кода в пост:PHP - нужна помощь Объявление и использование константы

if (is_production()) { 
    define('ROOT_PATH', '/some/production/path'); 
} 
else { 
    define('ROOT_PATH', '/root'); 
} 
include ROOT_PATH . '/connect.php'; 

На какой странице я добавить определить заявление и как я могу сослаться на ROOT_PATH на каждой последующей странице, которая имеет (index.php?) заявление включения?

Я попытался добавить определить заявление на страницу index.php, но называя ROOT_PATH на любых других результатов страницы в: Использование неопределенной константы ROOT_PATH

Index.php: определить («ROOT_PATH», «/ некоторые/производство/путь ');
некоторая другая страница: include_once (ROOT_PATH. "/ Library/API/database.inc.php");

+3

создать конфигурационный файл для всех переменных окружения и добавить этот файл на все ваши PHP файлы @FlyFish –

+0

@RyanVincent Я попытался добавить инструкцию define в index.php, но не распознавался на последующих страницах. – FlyFish

+0

Чтобы расшириться на @parthmahida ... создайте файл с именем вроде config.php и там, добавьте все ваши конфиги, константы и т. Д. ... затем на каждой странице включите файл config.php вверху. – Spechal

ответ

0

У вас есть 2 возможно (общие) подходы:

Создание файлов для каждой среды, как production.inc.php и development.inc.php и включают в себя тот, который вам нужно в вашем index.php с помощью вашего is_production() состояния.

- ИЛИ -

Создать один файл, содержащий

if (is_production()) { 
    define('ROOT_PATH', '/some/production/path'); 
} else { 
    define('ROOT_PATH', '/root'); 
} 

, а затем просто включить этот единственный файл для всех страниц, которые нуждаются в этих констант.

+0

Я думаю, что я не был ясен. Я просто хочу иметь инструкцию SINGLE define.Моя проблема в том, что я не могу понять, как заполнить константу ROOT_PATH, а затем получить доступ к ней на других страницах. – FlyFish

+0

@FlyFish вот что я имел в виду с последним предложением по моему ответу. Просто выполните 'include_once (" config.inc.php ");' на всех страницах, которым необходимо получить доступ к контингу. –

0

Я считаю, что моя проблема была проблемой SCOPING. Хотя я пошел с @ parthmahida и предложением @Spechal, все еще была проблема. В итоге мне пришлось взглянуть на область видимости, чтобы увидеть ее в функциях.

0

Если вы хотите включить файл, который будет содержать информацию о конфигурации среды и константы, он всегда должен быть относительно сценария, вызывающего его.

<?php 

// config.php 
function is_production(){ // do something to return boolean } 
if (is_production()) { 
    define('ROOT_PATH', '/some/production/path'); 
} 
else { 
    define('ROOT_PATH', '/root'); 
} 

...

<?php 

// index.php 
include 'config.php'; 
include ROOT_PATH . 'some-file.php'; 
// do stuff 

...

<?php 

// some-page.php 
include 'config.php'; 
include ROOT_PATH . 'other-file.php'; 
// do stuff 
Смежные вопросы