Невозможно переопределить класс CodeIgniter Helper

  [Fri Jul 27 03:08:18.935217 2018] [:error] [pid 11] [client 172.18.0.1:54146] PHP Fatal error:  Cannot redeclare CreateUniqeSlugOfuser() (previously declared in /var/www/public_html/livesite/application/helpers/MY_url_helper.php:111) in /var/www/public_html/livesite/application/helpers/my_url_helper.php on line 111

Выше ошибка, я подумал, может быть, это было простое переименование файла в моем каталоге в MY_url_helper с заглавной буквы, но это не исправило ошибку, как говорили некоторые сайты. Я не знаю, как это исправить, но у меня есть некоторые подсказки.

Я не эксперт по воспламенению кода, я взял этот проект от другого разработчика, но в настоящее время он работает на их сервере. Это не работает на моем сервере, однако. Видя, что проблема, вероятно, связана с автозагрузкой, что может быть, что я делаю неправильно? Может ли другая версия в PHP вызывать эту проблему?

введите описание изображения здесь

Еще одна догадка, может быть, это какой-то кеш, который я должен изменить? Я не уверен, хотя … любые идеи ценятся.

введите описание изображения здесь

я скажу после изменения имени файла ошибка все еще думает, что я использую строчную версию? Я знаю, что он читает файл, потому что я могу добавить phpinfo в файл, и он, кажется, вызывает, следовательно, изображение, которое я загрузил в результате этого.

Обновление :: Сделал echo CI_VERSION команда, чтобы найти это (2.2.0). Может быть, эта версия не совместима с PHP 7.0?

php56 — точно версия на другом сервере … я посмотрю, смогу ли я получить образ докера этого как-то.

Ну 5,6 все равно ошибка.

введите описание изображения здесь

Dockerfile

FROM php:5.6-apache
MAINTAINER Joe Astrahan <[email protected]>

RUN apt-get update && apt-get upgrade -y && \
apt-get install -y \
bzip2 curl git less mysql-client sudo unzip zip \
libbz2-dev libfontconfig1 libfontconfig1-dev \
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libzip-dev && \
rm -rf /var/lib/apt/lists/*


RUN docker-php-ext-install bz2 && \
docker-php-ext-configure gd \
--with-freetype-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ && \
docker-php-ext-install gd && \
docker-php-ext-install iconv && \
docker-php-ext-install opcache && \
docker-php-ext-install pdo_mysql && \
docker-php-ext-install zip

RUN curl -sS https://getcomposer.org/installer \
| php -- --install-dir=/usr/local/bin --filename=composer

# Set environment variables for Apache so we know its user and group names
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data

# Configure Apache SSL and Standard Virtualhosts
COPY config/apache_default.conf /etc/apache2/sites-available/000-default.conf
COPY config/apache_default-ssl.conf /etc/apache2/sites-available/default-ssl.conf
COPY config/run /usr/local/bin/run

# Configure SSL Directories & Create Temporary SSL Keys
RUN mkdir /etc/apache2/ssl
RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt  -subj "/C=US/ST=Florida/L=Fort Lauderdale/O=Pool Service Software LLC/OU=IT Department/CN=dev.poolservice.software.local"
RUN chmod +x /usr/local/bin/run
RUN a2enmod rewrite

#Configure SSL On Apache2 & Headers Mod
RUN a2enmod ssl
RUN a2enmod headers
RUN service apache2 restart
RUN a2ensite default-ssl.conf
RUN service apache2 restart

#Install Zip & Unzip
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install zip unzip -y

#Install NodeJS
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
software-properties-common

EXPOSE 80
EXPOSE 443

CMD ["/usr/local/bin/run"]

0

Решение

Возможно, вы уже загрузили помощник либо в автозагрузке, либо в классе, который был инициализирован до того, как вы попытались загрузить его снова. CI способен предотвращать дублирование с классами, но не чистыми вспомогательными файлами php. Вот почему они окружают свои функции:

if (!function_exists('functionname')) { ... }

Я бы посоветовал вам сделать то же самое.

0

Другие решения

Поэтому я решил проблему. Оказывается, версия PHP на самом деле не имела никакого значения, мой докер-файл был изменен на PHP 7.0, так как он работал с этим, я прикреплю его ниже.

Оказывается, что CodeIgniter 2.x использовал mysql вместо mysqli, поэтому я изменил все ссылки в коде соответственно. Также мне пришлось переименовать файл my_url_helper в urlhelper_helper, а затем в файле автозагрузки изменить его соответствующим образом, чтобы он загружал правильный файл. По какой-то причине, хотя он работал на старом сервере, мне пришлось сделать это, чтобы заставить его работать с любой версией PHP.

Эти исправления были всем, что было необходимо, чтобы это исправить.

0

По вопросам рекламы [email protected]