Разные уровни ошибок PHP на локальном компе и на сервере?

Ссылка скопирована
PHP
1 ответ

На серваке стоит PHP 8.2.7, дома PHP 8.3
В php.ini и там и там включен максимальный вывод всех ошибок. При этом на сервере, например ошибка о невозможности динамического создания переменной вылетает:
"Deprecated: Creation of dynamic property User::$name is deprecated in......."
а на локальном компьютере всё тихо, скрипт работает, как буд-то ни в чём не бывало.

Любые предложения, рад всему, потому как уже весь череп сломал. Жутко мешает при разработке, приходится все новшества перепроверять на боевом сервере.

Дополнительно:

ну так может стоить в первую очередь сделать что бы везде была одна версия?

  • Василий, запускал и под одной версией, толку ноль, поэтому и поставил домой самую свежую в надежде, что может это хоть как-то прояснит проблему. Но нет.
  • Роман, Следующий этап это проверить конфиги. Если вы используете докер то используйте туже сборку. Если нет сверяйте конфиги используемые конфиги можно посмотреть выведя phpinfo() на странице или php -i в консоле.
  • Просто настройте одинаковое окружение локально и на сервере.
  • Ответы:

    на разных версиях php ошибки имеют разный приоритет или могут отсутствовать

    для того чтобы понять отличия смотри миграции между версиями https://www.php.net/manual/ru/appendices.php

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Виктор Sys Ответ

    Различия в уровнях ошибок PHP между локальным компьютером и сервером могут возникать из-за различий в настройках конфигурации PHP на этих двух средах. Вот несколько причин, почему уровни ошибок могут отличаться:

    1. **Уровень отображения ошибок**: На локальном компьютере вы, возможно, установили значение `error_reporting` на `E_ALL`, что означает отображение всех типов ошибок, включая предупреждения и уведомления. На сервере это значение может быть установлено на более низкий уровень, например, `E_ERROR`, что означает отображение только фатальных ошибок.

    2. **Установки php.ini**: На сервере могут быть установлены различные параметры в файле `php.ini`, такие как `display_errors` и `error_reporting`, которые могут влиять на отображение и регистрацию ошибок.

    3. **Различия в версиях PHP**: На вашем лестопе может быть установлена более новая или старая версия PHP, чем на сервере, что также может привести к различиям в уровнях ошибок.

    4. **Настройки хостинга**: Некоторые хостинг-провайдеры могут иметь свои собственные настройки PHP, которые могут отличаться от стандартных настроек.

    Чтобы решить проблему с различиями в уровнях ошибок, вам следует:

    - Проверить и сравнить значения `error_reporting` и `display_errors` на локальном компьютере и сервере.
    - Убедитесь, что у вас установлена одинаковая версия PHP на обеих средах.
    - Просмотрите файл `php.ini` на сервере и убедитесь, что настройки соответствуют вашим ожиданиям.
    - Если вы не можете изменить настройки на сервере, попробуйте установить локально среду, которая будет более точно отражать настройки сервера.

    Приведу пример кода на PHP, который поможет вам увидеть текущие настройки ошибок:

    echo 'error_reporting: ' . error_reporting() . '<br>';
    echo 'display_errors: ' . ini_get('display_errors') . '<br>';

    echo 'error_reporting: ' . error_reporting() . '<br>'; echo 'display_errors: ' . ini_get('display_errors') . '<br>';

    Этот код выведет текущие значения `error_reporting` и `display_errors`. Попробуйте запустить его как на локальном компьютере, так и на сервере, чтобы увидеть различия в настройках.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно