Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с константами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проблемма при работе с константами, что я сделал не так?
Рус
Отправлено: 21 Февраля, 2008 - 00:13:15
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Июль 2007  
Откуда: Можайск


Помог: 0 раз(а)




Народ, если не трудно, объясните мне тупорылому, что я делаю не правильно:

есть файл index.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.    define('CONSTANT', true);
  4.  
  5.    include('main.php');
  6.  
  7. ?>


файл main.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.    if (!defined('CONSTANT')) die;
  4.  
  5.    echo('Всякая ересь...');
  6.  
  7. ?>


Казалось бы всё правильно, но при загрузке index.php пусто... По какой-то причине константа во включенном файле оказывается необъявленной. Я себе весь мозг сломал, и мануалы читал, и примеры смотрел - ни как...

(Отредактировано автором: 01 Марта, 2008 - 12:02:54)



-----
Желаю чтобы все...
 
 Top
Eihwaz
Отправлено: 21 Февраля, 2008 - 01:39:54
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




index.php:

main.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once('index.php');
  4. if (!defined('CONSTANT')) die;
  5. echo("Всякая ересь...");
  6. ?>
  7.  
 
 Top
Рус
Отправлено: 21 Февраля, 2008 - 02:41:59
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Июль 2007  
Откуда: Можайск


Помог: 0 раз(а)




Нет, так не пойдёт. Я main.php включаю в index.php, а не наоборот...


-----
Желаю чтобы все...
 
 Top
RomAndry Администратор
Отправлено: 21 Февраля, 2008 - 03:23:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




странно
а что показывает get_included_files ?
 
My status
 Top
Рус
Отправлено: 21 Февраля, 2008 - 19:00:29
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Июль 2007  
Откуда: Можайск


Помог: 0 раз(а)




Показывает:

index.php
main.php



По началу я думал, что проблемма с сервером. Закачал на другой сервер (подобная конструкция там сто пудов работала) - тоже самое... Я в непонятках...

(Отредактировано автором: 21 Февраля, 2008 - 19:04:46)



-----
Желаю чтобы все...
 
 Top
RomAndry Администратор
Отправлено: 21 Февраля, 2008 - 19:38:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




не нравится мне само слово CONSTANT попахивает зарезервированным словом, хотя попробовал у себя (PHP 5.2.3) - все работает корректно.
 
My status
 Top
Рус
Отправлено: 21 Февраля, 2008 - 22:56:52
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Июль 2007  
Откуда: Можайск


Помог: 0 раз(а)




В моём скрипте имя константы другое, здесь имена только для примера. В данном конкретном случае, имя константы вообще не имеет значения, проблема заключается в том, что в скрипте index.php я объявляю константу, далее в index.php включаю скрипт main.php, а в main.php проверяю наличие константы, если константа не объявлена - убивается скрипт. Вот тут-то и коза!.. В index.php константа видна, можно с ней работать, а во включённом main.php эта константа, почему-то, не видна, и скрипт, соответственно, убивается.


-----
Желаю чтобы все...
 
 Top
valenok Модератор
Отправлено: 22 Февраля, 2008 - 16:38:52
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Попробуйте написать
if ( defined('CONSTANT') === false )


-----
Truly yours, Sasha.
 
My status
 Top
Рус
Отправлено: 22 Февраля, 2008 - 18:50:26
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Июль 2007  
Откуда: Можайск


Помог: 0 раз(а)




Пробовал, в этом-то и проблема. defined('CONSTANT') в независимости от того, объявил я константу или нет всегда остаётся false.

(Добавление)

Всё ,разобрался. Как и большенство ошибок, довольно банальная. Тот код, что я показал в начале, не соответствует тому, что у меня:

здесь include('main.php') - путь относительный;

у меня include('http://' . $_SERVER['SERVER_NAME'] . 'main.php') - путь абсолютный.

Резюмирую:

В данной конструкции при абсолютном пути константа не видна во включённом файле.

Вывод:

Использовать относительный путь.

Наглядно:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.    define('CONSTANT', true); // объявляем константу
  4.  
  5.    include('http://' . $_SERVER['SERVER_NAME'] . 'main.php'); // неправильно
  6.  
  7.    include('main.php'); // правильно
  8. ?>


P.S. Огромное спасибо всем, кто пытался мне помоч. Извините, что ввёл вас (да и себя) в заблуждение, показав код, отличный от моего.

С Наступающим праздником Защитники Отечества!!!

(Отредактировано автором: 01 Марта, 2008 - 12:06:51)



-----
Желаю чтобы все...
 
 Top
RomAndry Администратор
Отправлено: 23 Февраля, 2008 - 02:44:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




еще раз get_included_files
 
My status
 Top
valenok Модератор
Отправлено: 23 Февраля, 2008 - 12:07:58
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




RomAndry
Инклудится файл, точнее уже результат исполнения.

php.net пишет:

If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB