2016-01-09 2 views
0

Я разрабатываю сайт с Lumen framework.Различия между локальными и удаленными серверами

Все настроено и работает отлично на месте. Однако это не относится к удаленному серверу.

Примеры:

  • Когда я восстановить данные из моей базы данных, даже если столбец содержит только целые числа, результат местного жителя integer, но в отдаленном: string. Я должен указать (int) перед целыми значениями, чтобы убедиться, что они целые.

  • Локально все мои классы принадлежат пространствам имен. Все работает локально и в отдаленных, иногда я ловлю себя с Class 'blabla\blibli' not found

Локально, я использую Xampp (PHP версии 5.6.14, MySQL версии 5.0.11-DEV) и удалить, я на общем сервере OVH (Версия PHP 5.6.15, версия MySQL 5.1.73).

Вы когда-нибудь сталкивались с этим? Есть ли способ исправить это? Может быть файл конфигурации для записи?

EDIT: Учитывая приведенные ниже комментарии, кажется, что ответы на мои вопросы на самом деле зависит от операционной системы используют.

Локально, я работаю на машине под Windows, а в удаленном - это машина под управлением Linux. Windows кажется менее сложной с определенными правилами, такими как чувствительность к регистру.

+0

Это может быть глупый вопрос, но ваши пути include правильно установлены в PHP, и ваши структуры таблиц точно такие же, как и в MySQL? –

+0

@mikealeonetti все то же самое в локальном и удаленном, включая таблицы sql – Zl3n

+2

Я думаю, что обработанные окна windows os в случае нечувствительной материи, а другие, относятся к регистру, но я мог ошибаться. в любом случае я считаю, что его хорошая оценка имеет единое соглашение об именах. – Andrew

ответ

2

Когда я восстановить данные из моей базы данных, даже если столбец содержит только целые числа, результат локального является целым числом, но в удаленной: строке. Я должен указать (int) перед целыми значениями, чтобы убедиться, что они являются integer.

Это происходит потому, что PHP не знает, как интерпретировать результат запроса. Информация о том, как интерпретировать значения столбцов, отсутствует. Чтобы исправить это и иметь правильное представление типа в PHP, у вас должен быть установлен собственный драйвер MySQL (mysqlnd).

Here's a link to documentation page that explains how to do it.

Локально все мои классы относятся к пространствам имен. Все работает локально и в отдаленных, я иногда ловлю себя с классом «блабла \ blibli» не найдено

Согласно комментариям, по-видимому, вы разрабатываете на одной ОС и развертывания на другой ОС. Поскольку Windows на самом деле MUCH MUCH WORSE, чем Linux (и это не я, фанат Linux, это простой факт), они склонны простить много, когда дело доходит до чувствительности к регистру, а что нет.

Windows, прощающая за такие вещи, не означает, что они лучше или что с Windows все меньше хлопот (из sys admin POV, Windows - кошмар). Это просто означает, что вы не можете лениться и ожидать, что ОС простят все и угадать, как вы намеревались работать над своим кодом.

  • Будьте последовательны
  • Установите среду разработки, чтобы соответствовать среды развертывания. Вы можете использовать для этого виртуальные машины. Если вы предпочитаете разрабатывать под Windows, вы можете использовать Oracle Virtualbox для запуска ОС Linux, настроить Samba и в Windows вы можете сопоставить диск Linux. Это позволяет запускать вашу среду IDE под Windows, и весь код сохраняется в ящике Linux. Ваш веб-сервер и php должны работать под Linux, и вы можете получить к нему доступ через браузер, который работает под Windows.
  • Настройте тесты. Запустите их перед развертыванием. Это скажет вам, возможно ли вы пропустили или пропущено что-то
  • Соответствовать

удачи.

+0

По-видимому, 'mysqlnd' не будет и не будет встроен в OVH. Зачем ? Хороший вопрос. Однако я заметил (сделав 'phpinfo()'), что этот параметр интегрирован в мою среду разработки. С помощью рамки Laravel (lumen) у меня была возможность работать с усадьбой на Linux, но мне удобнее развиваться под окнами. У меня есть свои привычки и инструменты в течение многих лет. Но на самом деле я теперь понимаю, почему существует так много различий между моей локальной и удаленной средой. Простой вопрос операционной системы. Благодарим вас за это ** очень очень четкое описание **! – Zl3n

+0

Я знаю * точно * как вы себя чувствуете. Я работаю под Windows в течение многих лет, и я медленно перешел на Linux. В настоящее время я использую обе операционные системы, просто потому, что не могу позволить себе не знать, что происходит в мире ИТ. К счастью, я использую оба из них в одно и то же время (я запускаю свои IDE @ окна, но все остальное находится под виртуальными машинами Linux). Самое худшее, что вы можете сделать для себя, - это, как говорит мой друг, «каменный мозг». Расширьте свои знания и горизонты, попробуйте эти новые вещи и поверьте мне - ваша жизнь в развитии станет легче. Вы, по крайней мере, знаете, что другие используют. –

Смежные вопросы