@photosho

Почему перестал запускаться процесс PM2 для Laravel?

Процесс pm2 для Laravel перестал запускаться, в логах следующая ошибка:

SyntaxError: Unexpected token '<'
  at Object.compileFunction (node:vm:360:18)
  at wrapSafe (node:internal/modules/cjs/loader:1126:15)
  at Module._compile (node:internal/modules/cjs/loader:1162:27)
  at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
  at Module.load (node:internal/modules/cjs/loader:1076:32)
  at Function.Module._load (node:internal/modules/cjs/loader:911:12)
  at /root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/lib/ProcessContainer.js:304:25
  at wrapper (/root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/node_modules/async/internal/once.js:12:16)
  at next (/root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/node_modules/async/waterfall.js:96:20)
  at /root/.nvm/versions/node/v16.20.2/lib/node_modules/pm2/node_modules/async/internal/onlyOnce.js:12:16
/var/www/site.ru/public_html/public/index.php:1


Вот настройки ecosystem:

module.exports = {
  apps: [{
    name: 'LaravelApp',
    script: 'public/index.php',
    args: ['serve', '--host=0.0.0.0', '--port=8000'],
    exec_mode: 'cluster',
    instances: 'max',
    wait_ready: true,
    max_restarts: 1,
    interpreter : 'php',
    watch: true,
    error_file: 'log/err.log',
    out_file: 'log/out.log',
    log_file: 'log/combined.log',
    time: true,
    autorestart: true,
  }]
}


Странно, потому что ещё недавно запускался и работал - только сегодня я решил его перезапустить, и он больше работать не хочет. Запуск процесса через "php artisan serve" работает - процесс обслуживается, и сайт открывается как положено. Сервер Ubuntu, Nginx.

В чём может быть дело?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@photosho Автор вопроса
Побеждено. Решение:

Поменял содержимое ecosystem.js:
module.exports = {
  apps: [
    {
      name: 'LaravelApp',
      script: 'php artisan serve --host=0.0.0.0 --port=8000',
      exec_mode: 'fork',
      instances: 'max',
      wait_ready: true,
      max_restarts: 1,
      watch: true,
      error_file: 'log/err.log',
      out_file: 'log/out.log',
      log_file: 'log/combined.log',
      time: true,
      autorestart: true,
    }
  ]
}

То есть, поменял "exec_mode" на "fork" и убрал "interpreter: 'php'".

Запустил процесс в pm2. Пока работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@aleksejjjjj
Начнём с основ. pm2 - штука для ноды, Laravel - PHP фреймворк.
Факт 2: в 99.9% случаев, когда видите ошибку Unexpected token '<' стоит заглянуть в консоль и увидеть что вместо ожидаемого ответа там сыпется какая-то ошибка PHP. Не json а условный var_dump, dd или <error>Undefined offset 123!!!Обратили внимание на первый знак сообщения?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы