Тема: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Поставил Stawberry 1.1.1 на новый сайт, при запуске www.mysite/lenta2/index.php

Пишет:
Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in /home/medianews/domains/medianews.tv/public_html/lenta2/inc/functions.inc.php on line 1026

На localhost все работает отлично.

Пробовал ставить с нуля, все равно эта же ошибка.

Stawberry ставил на многие сайты, опыт есть, но тут никак.

База текстовая.

Может дело в версии пхп?

На сервере новейшая пятая стоит.

Помогите, может кто-то уже сталкивался с такой же проблемой?

P.S. Поиск не помог.

СПАСИБО!

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Была подобная фигня в админке после добавления новости. Все исчезло когда поставил на все файлы системы 777.
но это неправильно!

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Ставить на все 777 я пока не пробовал.

Это проблема именно из-за нового PHP 5.

Эта функция

function namespace($str){
global $sql, $mod;

    foreach ($sql->select(array('table' => 'news')) as $row){
        if (@preg_match("/$str([0-9]+)?/i", $row['url'])){
            $result[] = $row['id'];
        }

        if (@preg_match("/$str([0-9]+)?/i", $row['id'])){
            $result[] = $row['id'];
        }
    }

    $count = count($result);

    if ($mod == 'addnews'){
        $count++;
    }

return totranslit($str.(($count and $count != 1) ? ' '.$count : ''));
}

Выдает ошибку.

Но что в ней исправить, я не знаю.

Пробовал вообще ее убрать, но тогда после логина идут сбои в выводе новостей.

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

volny, вероятно, при вызове функции namespace в передаваемой строке где-то кавычка не закрыта.

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Кстати у меня сервер логи на эту функцию foreach кидает.

при вызове функции namespace в передаваемой строке где-то кавычка не закрыта

А вот тут можно поподробнее? Где-то понятие растяжимое (и если учесть что Strawberry уже не маленький скрипт, это может вызвать затруднение...)! Хотябы примерно.

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

С той проблемой разобрался.

Теперь ошибка в файле inc/mod/addnews.mdu

Parse error: syntax error, unexpected '(', expecting T_PAAMAYIM_NEKUDOTAYIM in /home/medianews/domains/medianews.tv/public_html/lenta/inc/mod/addnews.mdu on line 68


'url'      => ($url ? namespace($url): namespace(totranslit($title))),

Это и есть строка 68.

Что в ней не так?

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

volny, смущает T_PAAMAYIM_NEKUDOTAYIM.

8 (16 Feb 2008 19:21:58 отредактировано volny)

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Изменил NAMESPACE на STRING.

Теперь ошибка такая:

Parse error: syntax error, unexpected ')' in /home/medianews/domains/medianews.tv/public_html/lenta/inc/mod/addnews.mdu on line 68

Я не понимаю, в чем ошибка, если кто сталкивался с такой ошибкой, подскажите, плиз!

Вообще Stawberry 1.1.1 должен работать на php 5.3?

9

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

volny, string вроде зарезервированное имя. Используцй mstring или типа того. В 5.3 namespace тоже зарезервировано, т.к. в 5.3 появилось само понятие неймспейсов, чего раньше не было.

Признанный мастер чинпоко, а-ай ^_^

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Ну, после обновления до PHP 5.3 Strawberry перестала работать (Parse error: syntax error, unexpected T_NAMESPACE)

Я заменил "namespace" с "namespaced" в function.inc.php, addnews.php, editnews.php и xmlrpc.php. Я думаю, что есть некоторые другие.

Но теперь это приводит к более многочисленные ошибки:
Parse error: syntax error, unexpected $end in E:\localhost\htdocs\sberry111\system\inc\plugins.default.php on line 470 и другие файлы.

Сначала я думала, что не хватает ")", но я не нашел. Не проблема, как представляется, php Тег "<?" больше не работает. Поэтому я добавил: "<?php" во всех(?) Файлов.

Теперь, в 1.1.1 я ничего не вижу, только белый сайт. В версии 1.2 бета я не некоторых частях, Например pin check.

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Вообще правильно использовать <?php
Короткий вариант <?  может быть отключен в настройках сервера. Конкретно в php.ini ...

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Вы правы. Я заменила все короткие теги только потому, что некоторые серверы не позволяют доступ к php.ini

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

В 1.2 уже все полностью исправил в этом вопросе.

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

strawberry1.1.1 mysql
правильно ли я понял, что при переходе хостера к версии php 5.3 подобная проблема может возникнуть у любого, в том числе и у меня?
стоит ли уже сейчас предпринять какие-то меры?

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Я думаю нужно почитать доки и убедиться, что это нельзя исправить через php.ini
А уж потом трясти нас, чтобы мы исправили дистрибутив...

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

16

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

volny пишет:

Поставил Stawberry 1.1.1 на новый сайт, при запуске www.mysite/lenta2/index.php

Пишет:
Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in /home/medianews/domains/medianews.tv/public_html/lenta2/inc/functions.inc.php on line 1026

На localhost все работает отлично.

Пробовал ставить с нуля, все равно эта же ошибка.

Stawberry ставил на многие сайты, опыт есть, но тут никак.

База текстовая.

Может дело в версии пхп?

На сервере новейшая пятая стоит.

Помогите, может кто-то уже сталкивался с такой же проблемой?

P.S. Поиск не помог.

СПАСИБО!

Почему никто не написал толком решения этой проблемы? Ведь тема именно с нее начиналась , у меня такая же проблема , причем на сервере в начале работала , а теперь: Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING or '(' in /home/n0003660/public_html/det2-12.ru/strawberry/inc/functions.inc.php on line 1026 на всех страницах сайта и на самой ставбери тоже , у меня 1.1.1 версия.

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Strawberry 1.1.1

Да, реально при переходе на PHP 5.3 выдаётся эта ошибка...
Тоже хотелось б увидеть готовое решение. Пока просто вернулся на 5.2

18

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Ydes, читаем описание изменений PHP 5.3 и удивлённо замечаем:

В php 5.3 добавлены новые константы: __NAMESPACE__ - текущий неймспейс...

Приложив ещё массу невероятных усилий, находим такую статью. Начинаем догадываться, что в PHP версии 5.3 namespace - это зарезирвированное слово!

// Лирическое отсупление
Надо бы ещё одно правило в форуме завести:

1. Прежде, чем создавать тему и ругать разработчиков:
...
1.4. потрудитесь убедиться, что проблема связана именно со Strawberry, а не с произволом разработчиков PHP или косяками вашего хостера.

// Конец лирического отсупления

После этого понимаем, что если есть возможность вернуться на более ранние версии PHP, то возвращаемся.

Если такой возможности нет, то вносим небольшие изменения в несколько файлов Strawberry. Вот эти файлы:

inc/mod/addnews.mdu
inc/mod/editnews.mdu
inc/mod/import.mdu
inc/functions.inc.php
convert/02x/index.php
xmlrpc.php

Так вот, ищем в них слово namespace( - именно так, со скобкой на конце, и заменяем на my_namespace( - тоже со скобкой на конце. Работа нетрудная, нужно всего 6 раз в Блокноте открыть упомянутые файлы и выполнить команду "Заменить namespace( на my_namespace(".

Не стОит благодарности!

P.S. И долго мы этот беспредел терпеть будем?!! Придумывают ключевые слова, которые давно заняты нормальными людьми lol

19 (05 Oct 2010 19:58:48 отредактировано olafsen)

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Stawberry 1.1.1 , PHP 5.3 , база текстовая.

Сделал все изменения, указанные выше - проблема новая - белые страницы как на главной, так и на стартовой админки.

Код главной страницы сайта (после изменений)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-1251" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>

И ... всё.

20

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

olafsen, этот код формирует браузер, когда ему ничего не передаётся. Это значит, что при формировании страницы php-кодом где-то закралась ошибка (кавычку забыли закрыть и п.х.), а вывод ошибок у вас отрублен.

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

ANT-Soft, сделал только замену namespace( на my_namespace( .

А код страницы можно просмотреть только в IE.
Когда в Stawberry 1.2.* сделал такую замену - система установилась и работала.

Но нужно старый сайт с тысячами новостей перевести на PHP 5.3?

P.S. Граждане, ведь всех ждёт переход хостеров на PHP 5.3 и выше. Разве никто не решил эту проблему?

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

а вы точно везде поменяли?
и как вы меняли?

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

olafsen, Поиск в head.php для

if (@chmod(cache_directory, 0777)){
    @chmoddir(data_directory, 0777);
    @chmod(data_directory, 0755);
    @chmod(backup_directory, 0777);
}

изменить его

if (@chmod(cache_directory, 0777)){
    // @chmoddir(data_directory, 0777);
    @chmod(data_directory, 0755);
    @chmod(backup_directory, 0777);
}

24 (06 Oct 2010 21:41:40 отредактировано olafsen)

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

Miksar, изменял в файлах:

inc/mod/addnews.mdu
inc/mod/editnews.mdu
inc/mod/import.mdu
inc/functions.inc.php
convert/02x/index.php
xmlrpc.php

эти файлы взял из дистрибутива Stawberry 1.1.1, думал, что в моих что-то не так.

Изменял так:

1. addnews.mdu стр.68
вместо 

'url'      => ($url ? namespace($url) : namespace(totranslit($title))),

замена

'url'      => ($url ? my_namespace($url) : my_namespace(totranslit($title))),

2. editnews.mdu стр. 502
вместо 

'url'      => ($url ? namespace($url) : namespace(totranslit($title))),

замена

'url'      => ($url ? my_namespace($url) : my_namespace(totranslit($title))),

3. import.mdu стр. 88
вместо 

'url'      => namespace(totranslit($result['title'][$i])),

замена

'url'      => my_namespace(totranslit($result['title'][$i])),

4. functions.inc.php стр. 1026
вместо

function namespace($str){

замена

function my_namespace($str){

5. convert/02x/index.php стр. 176
вместо

'url'      => ($fo_arr[7] ? namespace($fo_arr[7]) : namespace(totranslit($fo_arr[2], $that)))

замена

'url'      => ($fo_arr[7] ? my_namespace($fo_arr[7]) : my_namespace(totranslit($fo_arr[2], $that)))

6. xmlrpc.php стр.124
вместо

'url'      => ($url ? namespace($url) : namespace(totranslit($title))),

'url'      => ($url ? my_namespace($url) : my_namespace(totranslit($title))),

стр. 262
вместо

'url'      => ($url ? namespace($url) : namespace(totranslit($title))),

замена

'url'      => ($url ? my_namespace($url) : my_namespace(totranslit($title))),

Результат - белая страница.



Chaser, по Вашему варианту сайт заработал, но.... Функция eregi () является устаревшей в etc.php - Function eregi() is deprecated in plugins.default.php on line 452

Отключил плугин  CN functions - и всё работает.

Re: unexpected T_NAMESPACE, expecting T_STRING. functions.inс.php стр. 102

eregi() тоже следует заменить. Т.к. функции типа preg работают быстрее.
Об этом можно прочитать на любом сайте с доками по пхп функциям...

Я вот лично заменил все программно. Есть прожка @Text Replacer - так там задаешь папку - где искать, формат файла (можно во всех файлах), Что найти и (опционально) на что заменить. очень удобно! Причем вам выводится список файлов найденных или замененных...

1 минуту и 6 секунд спустя:

да, к 5.3 я уже вроде все исправил, что только можно было )))

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!