Ошибка синтаксического анализа Php в приложении Drupal 7

Я попытался запустить установку Drupal 7 в своей локальной среде, которая раньше работала нормально. Я использую Mac OS X. При локальном запросе веб-сайта браузер показывает:

Ошибка синтаксического анализа: ошибка синтаксического анализа в /Library/WebServer/Documents/.../xxx.module в строке 7

Строка 7

$variables['path'] = $base_url . "/sites/default/files/" . explode('public://',$file->uri)[1]

ИЛИ он возвращает ошибку с кодом:

ERR_EMPTY_RESPONSE

Файл ошибки apache показывает:

дочерний pid 2114 выходной сигнал Ошибка сегментации (11)

php -v возвращает

PHP 5.3.26 (cli) (построено: 7 июля 2013 г., 19:05:08) Copyright (c) 1997–2013 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998–2013 Zend Technologies

Код вроде не ошибся. Точно так же работает на другой машине.


person magic_al    schedule 21.12.2013    source источник
comment
Как насчет кода в строке 7 ?? ... возможно, вам не хватает какого-то расширения php или что-то в этом роде   -  person Hackerman    schedule 22.12.2013
comment
Это строка 7: $variables['path'] = $base_url . /сайты/по умолчанию/файлы/ . взорвать('public://',$file-›uri)[1];   -  person magic_al    schedule 22.12.2013


Ответы (2)


Разыменование массива было добавлено в PHP5.4. Ваш сервер имеет версию 5.3.26, так что это

explode('public://',$file->uri)[1];

недопустимый синтаксис.

Вам нужно либо обновиться до 5.4 (Homebrew делает это легко), либо изменить свой код:

$parts = explode('public://',$file->uri);
$variables['path'] = $base_url . "/sites/default/files/" . $parts[1];
person Clive    schedule 23.12.2013
comment
Я обновил свой Php до последней версии, и ошибка парсера исчезла. Спасибо! - person magic_al; 23.12.2013

Почему бы вам не использовать file_create_url.

$variables['path'] = file_create_url($file->uri);
person Muhammad Reda    schedule 23.12.2013