Predis: تم رفض الاتصال [tcp: //127.0.0.1: 6379] لكنني قمت بالفعل بتعيين مضيف ومنفذ آخر

تم إنشاؤها على ٢٤ ديسمبر ٢٠١٥  ·  10تعليقات  ·  مصدر: predis/predis

رمز بلدي:

<?php
# predis code:
require "predis/Autoloader.php";
Predis\Autoloader::register();
$redis = new Predis\Client('tcp://10.58.174.11:6479');
$redis->set('foo', 'bar');
echo $redis->get('foo').PHP_EOL;
# phpredis code:
$redis2 = new Redis();
$redis2->connect('10.58.174.11', 6479);
$redis2->set('foo', 'bar2');
echo $redis2->get('foo').PHP_EOL;

أقوم بتشغيل هذا البرنامج النصي في cli:

$ php test.php
bar
bar2

ولكن عندما أطلب عنوان url http://xxx.com/test.php ، قم بإرجاع 500

[24-Dec-2015 14:06:51 PRC] PHP Fatal error:  Uncaught exception 'Predis\Connection\ConnectionException' with message 'Connection refused [tcp://127.0.0.1:6379]' in /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connection/AbstractConnection.php:168
Stack trace:
#0 /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connection/StreamConnection.php(97): Predis\Connection\AbstractConnection->onConnectionError('Connection refu...', 111)
#1 /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connection/StreamConnection.php(58): Predis\Connection\StreamConnection->tcpStreamInitializer(Object(Predis\Connection\Parameters))
#2 /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connection/AbstractConnection.php(94): Predis\Connection\StreamConnection->createResource()
#3 /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connection/StreamConnection.php(158): Predis\Connection\AbstractConnection->connect()
#4 /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connect in /home/work/local/monitor/odp/webroot/servicegraph/api/frame/predis/Connection/AbstractConnection.php on line 168

لقد قمت بحذف كود بريديس ، نجح تشغيل كود فبريديس ، سلسلة إرجاع عنوان url هذه 'bar2'.

خادم الويب الخاص بي هو Nginx + PHP-FPM. قبل ذلك ، أقوم بالاتصال باستخدام جورب unix المحلي ، والآن أقوم بتغيير redis المحلي إلى خادم بعيد.

أنا في حيرة من أمري ، لقد قمت بالفعل بتعيين المضيف [10.58.174.11] والمنفذ [6479] ، لماذا يعد php-cli على ما يرام ، ولكن عنوان url هو فشل.

التعليق الأكثر فائدة

لجميع الأشخاص الآخرين في هذه الصفحة من google ،

هذا ما أحتاجه لإصلاح هذا الخطأ ،

إذا كنت تستخدم جهاز Mac ، فقم بتثبيت redis مع homebrew عن طريق تشغيل:

brew install redis

قم بتشغيل خادم redis من سطر الأوامر عن طريق تشغيل:

خادم redis $ /usr/local/etc/redis.conf

ال 10 كومينتر

لقد حددت IP 10.58.174.11 في التعليمات البرمجية الخاصة بك ، ومع ذلك فإن الخطأ الذي تم إرجاعه يتعلق بمحاولة الاتصال بـ 127.0.0.1 IP ، والذي سيكون مكان بدء التحقيق ، على ما أعتقد. حاول تمرير معلمات الاتصال إلى Predis \ Client كمصفوفة مجزأة بدلاً من سلسلة اتصال ، مثل:

$redis = new Predis\Client([ 'scheme' => 'tcp', 'host' => '10.58.174.11', 'port' => 6379, ]);

أيضًا ، أنت تستخدم منفذًا مختلفًا لخادم Redis (6479) بدلاً من الافتراضي (6379) ، هل هذا جيد؟

@ tin-cat Thx. أنا أقرر ، إنه 6479. و php-cli هو النجاح.
تكوين مصفوفة مجزأة فشل أيضًا.

أنا متعب الليلة الماضية ، أرتكب بعض الأخطاء. اذهب للمنزل ونم ، ربما صباح الغد لا بأس.

: D يحدث غالبًا ، سترى هذا أكثر وضوحًا غدًا ، أتمنى لك ليلة سعيدة!

أشك في أن هذه المشكلة مرتبطة مباشرة بـ Predis ، لذلك أقوم بإغلاقها ، لكن لا تتردد في إعادة فتحها إذا كانت هناك تحديثات.

لا يُسمح لنصوص httpd بشكل افتراضي بالاتصال بالشبكة.
سيؤدي هذا إلى منع المتسلل من اقتحام خادم httpd الخاص بك
ومهاجمة الآلات الأخرى. إذا كنت بحاجة إلى نصوص لتتمكن من:

sudo / usr / sbin / setsebool httpd_can_network_connect = 1
sudo setsebool -P httpd_enable_homedirs 1

لجميع الأشخاص الآخرين في هذه الصفحة من google ،

هذا ما أحتاجه لإصلاح هذا الخطأ ،

إذا كنت تستخدم جهاز Mac ، فقم بتثبيت redis مع homebrew عن طريق تشغيل:

brew install redis

قم بتشغيل خادم redis من سطر الأوامر عن طريق تشغيل:

خادم redis $ /usr/local/etc/redis.conf

لقد حدث هذا الخطأ بعد ترقية نوع مثيل AWS. بعد إعادة تشغيل الخادم و nginx ، عملت بعد حوالي 10-15 دقيقة.

لمستخدمي Linux ، يرجى استخدام sudo apt-get install redis-server وهذا كل شيء ، خطأ Predis / Redis.

توسيع إجابة @ tangod0wn : إذا كنت تريد تشغيل خادم redis في الخلفية ، لذلك لا يتعين عليك تشغيل هذا الأمر وإبقاء نافذة المحطة الطرفية مفتوحة في أي وقت تحتاج فيه إلى رمز وصول جديد ، فيمكنك إضفاء الطابع الخفي على الأمر ( على macOS):

/usr/local/bin/redis-server --daemonize yes

كما مأخوذ من هنا

إذا كنت تريد إيقاف تشغيل ذلك مرة أخرى ، فما عليك سوى قلب المنطقية:

/usr/local/bin/redis-server --daemonize no
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

mnvx picture mnvx  ·  9تعليقات

luoxun picture luoxun  ·  7تعليقات

ghost picture ghost  ·  4تعليقات

eventbase-web picture eventbase-web  ·  5تعليقات

dereuromark picture dereuromark  ·  9تعليقات