Я написал поле пользовательской формы на сайте Joomla 2.5.
Мое поле формы выбирает значение идентификатора и имя тега из таблицы базы данных и позволяет выбрать несколько флажков. Довольно просто
Моя проблема в том, что код отлично работает на моем dev-сервере (MAMP, стандартные настройки), но не работает на моем DigitalOcean Ubuntu 14.04 VPS.
MAMP (выше)
В.С.
DigitalOcean (ниже)
Так что да, я ищу идеи здесь. Моя главная мысль — это в настройках PHP, в отключенных функциях.
MAMP не имеет отключенных функций, Digital Ocean имеет следующее:
Функции инвалидов pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority,
Есть идеи?
ОБНОВЛЕНИЕ: Я закомментировал отключенные функции на мгновение, перезапустил сервер. Получил несколько разных ошибок консоли, которые были интересны, но это не решило проблему. Любые другие предложения?
ОБНОВЛЕНИЕ 2: Решено путем изменения имени файла на все строчные буквы на производственном сервере. Ответ ниже показывает детали.
Это может произойти, когда Joomla не найдет пользовательское определение поля формы — в этих случаях оно возвращается к стандартному тексту. input
элемент.
В зависимости от того, как вы переместили сайт с настроек MAMP на работающий Ubuntu VPS, у вас могут отсутствовать файлы.
Если вы следовали стандарту Joomla для пользовательских полей формы, у вас должно получиться что-то вроде этого:
/components/com_mycomponent/models/fields/mycomponentmultitags.php
Я хотел бы проверить, что ваш файл настраиваемого поля существует на VPS и что его разрешения установлены правильно (644 должен это сделать).
Относительно причины проблемы (то есть случай имени файла). Таким образом, файловые системы чувствительны к регистру, а некоторые нет, а некоторые учитывают регистр (то есть показывают регистр), но не чувствительны к регистру. Я должен был узнать, что вы были на MAMP (то есть на Mac), OSX работает на HFS +. HFS + по умолчанию не чувствителен к регистру, но сохраняет регистр. Поэтому вызов всего строчного имени файла будет работать на MAMP, но не на Ubuntu (потому что Это чувствителен к регистру.
Что в данном случае возвращает вас к тому факту, что Joomla (он же PHP) не может найти определение поля пользовательской формы (он же файл) CategoryCheckBoxes.php
потому что искал categorycheckboxes.php
)
Хорошо, я заставил его работать, но мне не нравится не знать, почему это сработало.
Опять же, он работал на разработке (MAMP), но не на моем производственном VPS (Стандартный Ubuntu 14.04 LAMP Apache2)
Я изменился:
администратор / компоненты / com_mycomponent / модель / поле / CategoryCheckBoxes.php
чтобы:
администратор / компоненты / com_mycomponent / модель / поле / categorycheckboxes.php
Да, я сделал имя файла в нижнем регистре, и он работал как шарм. Это все, что я изменил. Кто-нибудь знает, почему это произойдет и почему это будет отличаться в зависимости от типа сервера?