Разница между сервером MAMP и DigitalOcean LAMP Ubuntu 14.04, который испортил пользовательское поле формы Joomla

Я написал пользовательское поле формы на сайте Joomla 2.5.

Мое поле формы выбирает значение идентификатора и имя тега из таблицы базы данных и позволяет вам установить несколько флажков. Довольно просто.

Моя проблема в том, что код отлично работает на моем сервере разработки (MAMP, стандартные настройки), но не работает на моем DigitalOcean Ubuntu 14.04 VPS.

MAMP

МАМП (выше)

VS

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: Решено путем изменения имени файла на все строчные буквы на рабочем сервере. Ответ ниже показывает детали.


person Jaime    schedule 24.10.2014    source источник


Ответы (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)

person Craig    schedule 25.10.2014
comment
Эй, спасибо за ваш ответ! Уже были установлены разрешения на 644 (chown'd для www-данных и всего остального). На самом деле мой находится в adminadmin/components/com_componentname/models/fields/CategoryCheckBoxes.php с JFormFieldCategoryCheckBoxes, расширяющим JFormField внутри каждого файла, который я изменил, синхронизируется. Любые другие идеи? - person Jaime; 28.10.2014

Итак, я заставил это работать, но мне не нравится не знать, почему это сработало.

Опять же, это работало при разработке (MAMP), но не на моем производственном VPS (Standard Ubuntu 14.04 LAMP Apache2).

Я изменил:

администратор/компоненты/com_mycomponent/models/fields/CategoryCheckBoxes.php

to:

администратор/компоненты/com_mycomponent/models/fields/categorycheckboxes.php

Да, я сделал имя файла строчными, и это сработало как шарм. Это все, что я изменил. Кто-нибудь знает, почему это произойдет и почему это будет отличаться от типа сервера?

person Jaime    schedule 28.10.2014
comment
Да - см. мой обновленный ответ (моя ошибка в игнорировании ссылки MAMP в вашем вопросе). - person Craig; 28.10.2014