Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переход на PHP 5.3 - не устанавливается константа
 
 автор: cx717   (28.09.2011 в 12:09)   письмо автору
 
 

Всем привет.
Принудительно перехожу на php 5.3.
Столкнулся с проблемой:

код:


 
define('WWW_PATH', rtrim( $_SERVER['DOCUMENT_ROOT'], '/').'/' );
require_once( WWW_PATH .'/inc/mod.php');



Прекрасно работает на php 5.2. Что бы он заработал на php 5.3. его надо переписать так:



 
require_once( __DIR__ .'/inc/mod.php');

Константа __DIR__ удобная штука, но она не работает на php 5.2.
Каким образом сделать так, что бы приведенный выше код работл на обоих версиях php?

  Ответить  
 
 автор: Саня   (28.09.2011 в 12:52)   письмо автору
 
   для: cx717   (28.09.2011 в 12:09)
 

Зачем его переписывать? Предыдущий вариант не работает на 5.3? Выводятся какие-то ошибки?

  Ответить  
 
 автор: cheops   (28.09.2011 в 13:58)   письмо автору
 
   для: cx717   (28.09.2011 в 12:09)
 

Проверьте существование константы __DIR__ при помощи функции defined(), если она не существует, задействуйте старый код.

  Ответить  
 
 автор: cx717   (29.09.2011 в 10:34)   письмо автору
 
   для: cheops   (28.09.2011 в 13:58)
 

Похлже проблема не с версией php и не с кодом, а в каких-то настройках локального сервера.

Я все это делаю на локальной машине.
Позвонил хостерам ( а у них любой из вышеперечисленных вариантов работает безотказно ) так у них стоит php 5.2.17.



Может у кого-нибудь есть идеи о каких настройках может идти речь?

  Ответить  
 
 автор: cheops   (29.09.2011 в 10:43)   письмо автору
 
   для: cx717   (29.09.2011 в 10:34)
 

А как проявляется проблема? Выводится ли какое-то сообщение об ошибке?

  Ответить  
 
 автор: cx717   (29.09.2011 в 11:59)   письмо автору
 
   для: cheops   (29.09.2011 в 10:43)
 

нет.
просто файл не инклюдится

то есть код require_once( WWW_PATH. "/functions.php"); просто не выполняется на локальной машине, хотя отлично выполняется на сервере при той же версии php

  Ответить  
 
 автор: cheops   (29.09.2011 в 13:04)   письмо автору
 
   для: cx717   (29.09.2011 в 11:59)
 

А если непосредственно перед этим вывести
<?php
  
echo rtrim$_SERVER['DOCUMENT_ROOT'], '/').'/';
?>
выводится корректное значение?

  Ответить  
 
 автор: cx717   (29.09.2011 в 16:49)   письмо автору
 
   для: cheops   (29.09.2011 в 13:04)
 

Да, именно так - корректное значение!

  Ответить  
 
 автор: cheops   (29.09.2011 в 16:53)   письмо автору
 
   для: cx717   (29.09.2011 в 16:49)
 

После вызова функции define() проверьте установилась ли константа при помощи функции defined()
<?php
  
...
  if(
defined('WWW_PATH')) echo "Вроде все в порядке";
  else echo 
"Константа не была установлена";
  ...
?>

  Ответить  
 
 автор: cx717   (29.09.2011 в 20:08)   письмо автору
 
   для: cheops   (29.09.2011 в 16:53)
 

щас проверю

  Ответить  
 
 автор: cx717   (29.09.2011 в 20:22)   письмо автору
 
   для: cx717   (29.09.2011 в 20:08)
 

Да - установилась.
При этом если написать
require_once('functions.php');

то все работает.
То есть функция require_once работает, но не понимает константы.
С чего бы это?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования