[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"]
Возможно, вы уже загрузили помощник либо в автозагрузке, либо в классе, который был инициализирован до того, как вы попытались загрузить его снова. CI способен предотвращать дублирование с классами, но не чистыми вспомогательными файлами php. Вот почему они окружают свои функции:
if (!function_exists('functionname')) { ... }
Я бы посоветовал вам сделать то же самое.
Поэтому я решил проблему. Оказывается, версия PHP на самом деле не имела никакого значения, мой докер-файл был изменен на PHP 7.0, так как он работал с этим, я прикреплю его ниже.
Оказывается, что CodeIgniter 2.x использовал mysql вместо mysqli, поэтому я изменил все ссылки в коде соответственно. Также мне пришлось переименовать файл my_url_helper в urlhelper_helper, а затем в файле автозагрузки изменить его соответствующим образом, чтобы он загружал правильный файл. По какой-то причине, хотя он работал на старом сервере, мне пришлось сделать это, чтобы заставить его работать с любой версией PHP.
Эти исправления были всем, что было необходимо, чтобы это исправить.