При переезде проекта на Drepal 6 на новый сервер с php7 получил сообщение
Notice: Trying to get property of non-object in /srv/http/includes/path.inc on line 50
в этой строке вижу код
<?php $path_language = $path_language ? $path_language : $language->language;?>
Подскажите, как это вылечить?
Комментарии
заводить шестёрку на php 7 - это большое колдунство
LTS вроде поддерживает php7, но там маловато контрибных модулей.
PHP 7.2 адаптированный ап с ubercart https://drupala.ru/article/drupal-638-php-72
А без ubercart ? А проблема с views решена?
Убер- только модули адаптированы , можно выбросить - но не суть, views пофиксин
P.S. Это рабочий адопт используется на сайтах.
Спасибо, буду пробовать!
Учти - это update, если сайта нет - сначала поставь коробку а потом обнови файлы из сборки.
Если будут вопросы для оперативной связи пиши скайп / летегу.
В update нет модуля filter, выдает ошибку на split() в filter.module строка 914, заменил на explode
Как раз то, что нужно, сайт есть, но переехал на хостинг где php7
Fatal error: Uncaught Error: Call to undefined function ereg() in /includes/file.inc:973
Заменил на preg_match
Fatal error: Uncaught Error: Call to undefined function split() in /modules/filter/filter.module:914
Сейчас выдает
Notice: unserialize(): Error at offset 499 of 986 bytes in /srv/http/includes/bootstrap.inc on line 817
Notice: unserialize(): Error at offset 143 of 291 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 135 of 267 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 125 of 224 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 42 of 83 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 20 of 37 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 43 of 315 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 43 of 550 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 43 of 315 bytes in /srv/http/includes/bootstrap.inc on line 559
...
Warning: Cannot modify header information - headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 734
Warning: Cannot modify header information - headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 735
Warning: Cannot modify header information - headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 736
Warning: Cannot modify header information - headers already sent by (output started at /srv/http/includes/bootstrap.inc:559) in /srv/http/includes/bootstrap.inc on line 737
Notice: Trying to get property of non-object in /srv/http/includes/path.inc on line 63
У Вас свой sites/default/settings из аповского надо добавить
function ereg($pattern, $subject, array &$matches = NULL) {
return preg_match('%' . $pattern . '%', $subject, $matches);
}
}
if (!function_exists('eregi')) {
function eregi($pattern, $subject, array &$matches = NULL) {
return preg_match('%' . $pattern . '%i', $subject, $matches);
}
}
if (!function_exists('ereg_replace')) {
function ereg_replace($pattern, $replacement, $string) {
return preg_replace('%' . $pattern . '%', $replacement, $string);
}
}
if (!function_exists('eregi_replace')) {
function eregi_replace($pattern, $replacement, $string) {
return preg_replace('%' . $pattern . '%i', $replacement, $string);
}
}
if (!function_exists('split')) {
function split($pattern, $subject, $limit) {
return preg_split('%' . $pattern . '%', $subject, $limit);
}
}
if (!function_exists('spliti')) {
function spliti($pattern, $subject, $limit) {
return preg_split('%' . $pattern . '%i', $subject, $limit);
}
}
+
Изменена секция
* PHP settings:
*
* To see what PHP settings are possible, including whether they can
* be set at runtime (ie., when ini_set() occurs), read the PHP
* documentation at http://www.php.net/manual/en/ini.php#ini.list
* and take a look at the .htaccess file to see which non-runtime
* settings are used there. Settings defined here should not be
* duplicated there so as to avoid conflict issues.
*/
ini_set('arg_separator.output', '&');
ini_set('magic_quotes_runtime', 0);
ini_set('magic_quotes_sybase', 0);
ini_set('session.cache_expire', 200000);
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 2000000);
ini_set('session.gc_maxlifetime', 200000);
#ini_set('session.save_handler', 'user');
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
ini_set('url_rewriter.tags', '');
Во как, красиво! Попробую!
Если надо больше информации вот ветка по теме на орге https://www.drupal.org/forum/support/upgrading-drupal/2016-05-27/drupal-...
Внес изменения в sites/default/settings
Но Notice: unserialize(): Error at offset... остались
Определенная версия ПО (Программное Обеспечение)(в данном случае Drupal 6) разрабатывается и тестируется на определенном окружении (php, mysql и т.п.)
Разработчики могут гарантировать более-менее стабильную работу ПО только в том окружении, в котором это ПО тестировалось и показало удовлетворительные результаты тестирования.
Если вы решили использовать ПО не в том окружении для которого разрабатывалось данное ПО с использованием костылей, могу дать несколько советов:
1.Начинайте регулярно употреблять седативные средства (валокордин и прочие фенобарбиталы). Ибо когда в самый неожиданный момент и с самыми неожиданными последствиями все начнет работать не так как ожидалось, вам понадобится как минимум "холодная голова", как максимум чтобы не пришлось задействовать саппорт "Скорая медицинская помощь" для восстановления жизненных функций собственного организма.
2.Учредите статью расходов для восстановление работоспособности сайта при сбоях из-за костылезации его эксплуатации, и начинайте накапливать на ней ден.средства.
3.Застрахуйте бизнес и начинайте выплачивать страховые взносы.
4.На всякий пожарный, вывезите родных и близких в безопасное место.
или
возьмите нормальный облачный сервер, обеспечьте на нем необходимое для сайта окружение и забудьте про первую часть этого комментария.
Сейчас облачные выделенные сервера стоят копейки.
Проверяю таблицу variable на ошибки, выводит пустые строки
foreach($result as $variable){
$variables[$variable->name] = @unserialize($variable->value);
if ($variables[$variable->name] === FALSE) {
print $variable->name . '=' . $variable->value . '***
';
}
}
Хотя нет, не пустые
admin_theme=s:7:"garland";
...
boost_cache_css=i:1;
а как это вылечить?
Сайт заработал?
Почему @unserialize а не unserialize?
Почему name д.б. FALSE ?
Подключение к базе типа, прошло? $db_url = 'mysqli://username:password@localhost/databasename';
mysqli
Критические ошибки исчезли, но остались
Notice: unserialize(): Error at offset 143 of 291 bytes in /srv/http/includes/bootstrap.inc on line 559
Notice: unserialize(): Error at offset 135 of 267 bytes in /srv/http/includes/bootstrap.inc on line 559
....
Можно авторизоваться, можно зайти в админку.
Подключение mysqli прошло без проблем
name д.б. FALSE - хочу вывести только проблемные записи
https://ru.stackoverflow.com/questions/862775/%D0%9E%D1%88%D0%B8%D0%B1%D...
Ага что-то индивидуальное, ясно.
Честно говоря не понимаю почему у меня возникает Notice: unserialize(): Error at offset 143 of 291 bytes
Сравнил значения в таблицах variable на старох хостинге и на новом, все идентично. Кодировки таблиц тоже.