AMQPRuntimeException: ошибка чтения данных. Получено 0 вместо ожидаемых 7 байт

Он работал, но теперь он больше не работает!

Я использую phpamqplib и RabbitMQ.

Он показывает эту ошибку: (перетащите снимок экрана на новую вкладку, если это не ясно)

введите описание изображения здесь

когда я пытаюсь создать новое соединение AMQP:

$connection = new AMQPConnection('localhost', 5672, 'username', 'password'); 

Код внутри библиотеки, вызывающий эту ошибку:

 public function read($n) { $res = ''; $read = 0; while ($read < $n && !feof($this->sock) && (false !== ($buf = fread($this->sock, $n - $read)))) { if ($buf === '') { continue; } $read += strlen($buf); $res .= $buf; } if (strlen($res)!=$n) { throw new AMQPRuntimeException("Error reading data. Received " . strlen($res) . " instead of expected $n bytes"); } return $res; } 

Когда я поставлю это перед исключением:

 die($res." :".$n); 

результат:

 Ï :7 :7 

он вызывается дважды, при первом вызове $ res – два нулевых символа, тогда «Ï»

и во втором случае это просто нулевое значение.

oh и я удалил файлы внутри папки mnesia базы данных rabbitmq вручную один раз, я не знаю, вызвала ли это проблему, но RabbitMQ Management, работающее на веб-приложении на порту 15672, отлично работает.

Я нашел решение.

пользователь, которого я использовал, не имел доступа к vhost, поэтому в RabbitMQ Management я перешел на вкладку admin и нажал на имя пользователя и нажал кнопку «установить разрешение».

Вы также получите эту ошибку, если номер порта неверен. Я использовал порт управления 15672 вместо сервера 5672 по ошибке и получал эту же ошибку.

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

Я знаю, что на это уже был дан ответ, но вот еще одна возможная причина:

По умолчанию пользователь «гостя» может подключаться только через localhost по умолчанию. https://www.rabbitmq.com/access-control.html

Я получил эту ошибку «0» при попытке подключиться удаленно в первый раз после успешного тестирования локально. Настройка другого пользователя разрешила это для меня.

 rabbitmqctl add_user newuser <PASSWORD> rabbitmqctl set_permissions -p / newuser ".*" ".*" ".*" 

Этот и многие другие потенциальные ответы также находятся на github здесь