ФорумПрограммированиеPHP для идиотов → Переход на PHP 5.3

Переход на PHP 5.3

  • cx717

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2011 г. 1:05

    Всем привет.
    Принудительно перехожу на 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?
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2011 г. 1:08, спустя 3 минуты 4 секунды

    В начале файла вставляешь
    define('__DIR__',getcwd());
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 28 сентября 2011 г. 1:14, спустя 6 минут 36 секунд

    э неет. Так не пойдет. __DIR__ - это магическая константа, типа __FILE__, __METHOD__ и так далее. То есть в разных файлах значение у нее может быть разное.

    Так что ее нужно заменять на dirname(__FILE__)
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 28 сентября 2011 г. 2:16, спустя 1 час 1 минуту 46 секунд

    Почему первый вариант не работает на PHP 5.3 ?
  • cx717

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2011 г. 4:40, спустя 2 часа 24 минуты 7 секунд


    Почему первый вариант не работает на PHP 5.3 ?

    Вот уж не знаю почему - самому интересно. При этом если написать:

    echo WWW_PATH .'/inc/mod.php';

    Видно что путь нужный, а
    require_once( WWW_PATH .'/inc/mod.php'); 
    тем не менее не работает.
    И стоит просто переключиться на php 5.2 как
    require_once( WWW_PATH .'/inc/mod.php'); 
    начинает работать.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 28 сентября 2011 г. 5:51, спустя 1 час 10 минут 53 секунды

    Если написать полный путь сразу без констант, он подключит?
  • cx717

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2011 г. 7:07, спустя 1 час 15 минут 58 секунд

    Полный путь это как?
    Я пишу локально, потом заливаю на сервер.
    Полный путь как я понимаю в этих случаях разный.
  • cx717

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2011 г. 7:12, спустя 5 минут 21 секунду

    Поменял 343 вхождения WWW_PATH на dirname(__FILE__) и нихрена не заработало. Жесть.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 28 сентября 2011 г. 7:54, спустя 41 минуту 43 секунды

    это разные вещи. WWW_PATH - путь корня сайта.
    dirname(__FILE__) - аналог __DIR__
  • Chuck Norris

    Сообщения: 42 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2011 г. 10:29, спустя 2 часа 35 минут 20 секунд

    Да, лучше использовать
     dirname(__FILE__) . '/'

    работает железно на 5.2 и 5.3, доказано :D
  • cx717

    Сообщения: 7 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2011 г. 23:31, спустя 13 часов 1 минуту 59 секунд

    Да dirname(__FILE__) . '/' - работает железно.

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

    То есть проблема не с версией php и не с кодом, а в каких-то настройках локального сервера.
    Спустя 164 сек.
    Может у кого-нибудь есть идеи о каких настройках может идти речь?

    И еще вопрос не по теме: как тут можно править свой пост? ( че то кнопки "изменить не видно" )
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 1 октября 2011 г. 7:50, спустя 2 дня 8 часов 18 минут

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

    сравниваешь построчно phpinfo с локалхоста и удалённого серва и выясняешь причину

    как тут можно править свой пост? ( че то кнопки "изменить не видно" )

    это только у группы адекваты и выше
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!