Перемещена проблема с установочным образом CakePHP 1.3.8

Я пытаюсь переместить старую установку CakePHP 1.3.8 между серверами, и у меня возникают проблемы с отображением некоторых изображений.

Старый сервер: Ubuntu 14.04.5 LTS Apache 2.4.7 MySQL 5.5 PHP 5.5.9 PHP (GD, MYSQL)

Новый сервер: Centos 7.5.1804 Apache 2.4.6 MySQL 5.4 PHP 5.4 PHP (GD, MYSQL)

Я подтвердил, что DocumentRoot указывает на каталог Cake / app / webroot, а также имеет директиву AllowOverride All в конфигурации сайтов. Также проверили (3) файлы .htaccess, mod_rewrite и т. д.

Для отладки в core.php установлено значение «2», но единственная ошибка, зарегистрированная в журнале, связана с функцией изображения:

imagejpeg() [<a href='http://php.net/function.imagejpeg'>function.imagejpeg</a>]: Filename cannot be empty

Примеры того, что происходит на каждой странице проекта-

Рабочий сайт

Нерабочий сайт

Все остальное, включая доступ к базе данных, работает. Я почти ничего не знаю о cakephp, но, просматривая различные файлы, мне кажется, что эта функция вызывается из файла detail.ctp в каталоге views / projects:

<?php echo $html->image('/App/ContentImageView/'.$image3.'/250/400',array('title'=>'Project Image', 'id'=>'MainImg', 'alt'=>'Project I    mage', 'class'=>'border2')); ?>

И функция из app_controller.php

function ContentImageView($img_path, $w = '75', $h = '75'){
    Configure::write('debug', 2);
    debug($img_path, $showHTML = true, $showFrom = true);
if (empty($img_path)) return;
    $image = str_replace('@@', '/', $img_path);
    if (empty($image)) return;
    $this->autoLayout = false;
    $this->autoRender = false;
    if (empty($image)) return;
    //image resize parameters
    $FileConfig = array();
    $FileConfig['source_image'] = WWW_ROOT . '/'. $image;
    $FileConfig['dynamic_output'] = true;
    $FileConfig['maintain_ratio'] = true;
    $FileConfig['width'] = $w;
    $FileConfig['height'] = $h;
    ini_set('memory_limit', -1)
    $this->ImageLib->clear();
    $this->ImageLib->set($FileConfig);
    $this->ImageLib->resize()
}

Весь код отлично работает на старом сервере, поэтому я думаю, что это какая-то проблема с конфигурационным путем, но я просто не могу понять это.

Спасибо всем.

Вы сравнивали атрибут src изображений между рабочими и нерабочими страницами? Убедитесь, что путь к изображению правильный, и что изображение хранится на сервере в указанной папке.

Sloan Thrasher 15.05.2018 21:46

Что такое $this->ImageLib (debug(get_class($this->ImageLib)))? Возможно, он использует какой-то модуль PHP, такой как gd, который установлен на старом сервере, но не установлен на новом?

Greg Schmidt 16.05.2018 05:45

Кроме того, этот код выглядит уязвимым для потенциальной атаки обхода каталога.

Greg Schmidt 16.05.2018 05:47

Пути + пути к каталогам проверить. Я добавил пару отладочных операторов на страницу просмотра, и пути отображаются правильно. Сайт использует модуль PHP gd. На новом сервере стоит PHP-gd-5.4. PHP --info дает GD Support => enabled и GD Version => bundled (совместим с 2.1.0). Что касается потенциального нападения, я его рассмотрю. Спасибо

snx 16.05.2018 15:43

В предупреждении должно быть указано имя файла и номер строки (пожалуйста, всегда публикуйте сообщение полностью). Посмотрите, где на самом деле возникает ошибка, то есть место, где вызывается imagejpeg(). Также проверьте существующие вопросы относительно того же предупреждения, например stackoverflow.com/questions/19888246/…

ndm 17.05.2018 10:36

Спасибо что подметил это. Номер строки ссылается на ошибку в функции image_display_gd в image_lib.php. Однако изменение двойных одинарных кавычек на «NULL» не решает проблемы. Странно и то, что на рабочем сервере работает немного более новая версия PHP.

snx 17.05.2018 23:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
43
1

Ответы 1

Я установил виртуальную машину Centos 6.9 с PHP 5.3.3, и проблемы нет. Должно быть изменение в PHP, как указал ndm. Вместо того, чтобы пытаться выяснить, где нужно обновить код, мы продвигаемся к Centos 6.9, так как этот сайт все равно скоро будет закрыт.

Еще раз спасибо всем, кто ответил.

Другие вопросы по теме