Ошибка Lumen illuminate/support/Arr.php в строке 145

#php #laravel-5.2 #lumen-5.2

#php #laravel-5.2 #lumen-5.2

Вопрос:

В моей локальной среде разработки он работает нормально, но когда я развертываю lumen(5.2) проект на сервере и когда он пытается выполнить эту строку app('db')->select($sql, array($email)); , он выдает это исключение

 protected 'message' => string 'array_key_exists(): The first argument  should be either a string or an integer' (length=78)
private 'string' (Exception) => string '' (length=0)
protected 'code' => int 0
protected 'file' => string 
'/usr/src/app/api/vendor/illuminate/support/Arr.php' (length=50)
protected 'line' => int 145
private 'trace' (Exception) => 
array (size=32)
  0 => 
    array (size=4)
      'function' => string 'LaravelLumenConcerns{closure}' (length=32)
      'class' => string 'LaravelLumenApplication' (length=25)
      'type' => string '->' (length=2)
      'args' => 
        array (size=5)
          ...
  1 => 
    array (size=4)
      'file' => string '/usr/src/app/api/vendor/illuminate/support/Arr.php' (length=50)
      'line' => int 145
      'function' => string 'array_key_exists' (length=16)
      'args' => 
        array (size=2)
          ...
  2 => 
    array (size=6)
      'file' => string '/usr/src/app/api/vendor/illuminate/support/Arr.php' (length=50)
      'line' => int 280
      'function' => string 'exists' (length=6)
      'class' => string 'IlluminateSupportArr' (length=22)
      'type' => string '::' (length=2)
      'args' => 
        array (size=2)
          ...
  3 => 
    array (size=6)
      'file' => string '/usr/src/app/api/vendor/illuminate/database/DatabaseManager.php' (length=63)
      'line' => int 238
      'function' => string 'get' (length=3)
      'class' => string 'IlluminateSupportArr' (length=22)
      'type' => string '::' (length=2)
      'args' => 
        array (size=2)
          ...
  4 => 
    array (size=6)
      'file' => string '/usr/src/app/api/vendor/illuminate/database/DatabaseManager.php' (length=63)
      'line' => int 158
      'function' => string 'getConfig' (length=9)
      'class' => string 'IlluminateDatabaseDatabaseManager' (length=35)
      'type' => string '->' (length=2)
      'args' => 
        array (size=1)
          ...
  5 => 
    array (size=6)
      'file' => string '/usr/src/app/api/vendor/illuminate/database/DatabaseManager.php' (length=63)
      'line' => int 68
      'function' => string 'makeConnection' (length=14)
      'class' => string 'IlluminateDatabaseDatabaseManager' (length=35)
      'type' => string '->' (length=2)
      'args' => 
        array (size=1)
          ...
  6 => 
    array (size=6)
      'file' => string '/usr/src/app/api/vendor/illuminate/database/DatabaseManager.php' (length=63)
      'line' => int 317
      'function' => string 'connection' (length=10)
      'class' => string 'IlluminateDatabaseDatabaseManager' (length=35)
      'type' => string '->' (length=2)
      'args' => 
        array (size=0)
          ...
  

Я думаю, что это происходит для настройки среды на сервере, пожалуйста, подскажите мне, что я должен делать..

Ответ №1:

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

Поделитесь своим кодом, который вы используете с array_key_exists функцией.

Также поделитесь своей текущей версией php для разработки и сервера.

Комментарии:

1. разработка php 7.0.8 и серверная машина PHP >= 5.6.4

2. Я не включаю ведение журнала ошибок на своей машине разработки

3. Если вы не включили или не смогли увидеть ошибку во время разработки, то как вы решаете или как вы выяснили, откуда возникает ошибка? Пожалуйста, проверьте файл журнала. Возможно array_key_exists , функция получила нулевой параметр вместо массива. И убедитесь, что у вас установлена последняя версия lumen.

4. Спасибо @Sohel Amin, проблема была в моем подключении к базе данных.

5. в моем файле .env для поля DB_CONNECTION было установлено значение по умолчанию «true» с помощью Docker, где, как и должно быть, имя производного postgresql «pgsql».

Ответ №2:

У меня была такая же проблема прямо сейчас. Я получил ошибку max_memory_limit, но ни из-за чего. В этом случае перезапуск WAMP / LAMP / XAMP должен помочь. Я был бы кому-нибудь полезен … 🙂

Ответ №3:

пожалуйста, включите $app->withEloquent(); bootstrap/app.php . Если вы используете db, вы должны это сделать.