У нас есть веб-сайт на основе PHP, который работает с 2005 года. Мы только что добавили нового разработчика. У нас каждый разработчик устанавливает локальный стек Apache для отладки. Когда он запускает сайт на своей рабочей станции, появляется сообщение об ошибке, связанное с конфликтом имен с одной функцией.
В частности, у нас есть функция GetText, которая принимает 5 параметров. В его системе он получает сообщение о том, что функция не может быть повторно объявлена. Это противоречит функции, которая называется gettext (обратите внимание на различие в заглавных буквах), которая, как говорят, принимает одну переменную.
Мы не получаем этот конфликт ни в одном из наших других случаев. Другие примеры включают наш производственный веб-сайт и три веб-сайта разработки. Все эти экземпляры работают в Unix FreeBSD. У нас есть разработчики, работающие под OS OS X и на разных машинах Windows. Рассматриваемый разработчик работает на Windows 7.
Мы не видим никакой подобной функции «gettext» в нашей базе кода, включая библиотеки Pear. В качестве временного решения мы переименовали нашу функцию в «XGetText». Это излечивает проблему.
Откуда этот конфликт?
Этот разработчик имеет расширение gettext активен в своей установке PHP, которая определяет функцию gettext
, Капитализация не имеет значения для PHP. Ему либо придется деактивировать расширение в его php.ini, если это возможно, или перекомпилируйте PHP, чтобы исключить расширение gettext (в этом случае я бы предложил использовать виртуальную машину для установки пользовательской версии PHP).
Кстати, gettext — довольно популярное и часто используемое расширение, которое называет вашу пользовательскую функцию GetText
плохой выбор
PHP имеет встроенный gettext
функции (как в PHP 4, так и в PHP 5), а имена функций PHP не чувствительны к регистру. Предположительно, ваш PHP не скомпилирован с --with-gettext
флаг и его есть.
Отключить Расширение Gettext, как я уверен, вы не собираетесь использовать его в своем проекте
Вот как это делается в WAMP: