PHPを使用してRedisに接続できません
P粉465287592
2023-09-01 15:37:59
<p>php を使用して Redis に接続できません。
dockerで環境を構築し、phpとredisコンテナを使ってphpからredisに接続しようとしたのですが失敗しました。次のエラーが表示されます。 </p>
<pre class="brush:php;toolbar:false;">PHP 警告: PHP 起動: ダイナミック ライブラリ 'redis.so' をロードできません (試行: /usr/lib/php/20190902/redis.so (/ usr/lib/php/20190902/redis.so: 未定義のシンボル: php_json_decode_ex)、/usr/lib/php/20190902/redis.so.so (/usr/lib/php/20190902/redis.so.so: 開けません共有オブジェクト ファイル: そのようなファイルまたはディレクトリはありません)) 行 0 が不明です
PHP 注意: session_start(): /var/www/html/index.php の 2 行目で session_id を作成している間、Redis は使用できません
PHP 警告: session_start(): セッション データの読み取りに失敗しました: redis (パス: tcp://localhost:6379) (/var/www/html/index.php の 2 行目)
文字列(0) ""
save_handler=redis
save_path=tcp://localhost:6379
session_id=</pre>
<p>これは、エラーに応答して実行される php ファイルです。 </p>
<pre class="brush:php;toolbar:false;"><?php
セッション開始();
ini_set('セッション.クッキードメイン', 'ローカルホスト');
var_dump(session_id());
echo "save_handler=" .ini_get("session.save_handler") . "\n";
echo "save_path=" .ini_get("session.save_path") . "\n";
echo "session_id=" . session_id() . "\n";
$_SESSION['libname'] = "PhpRedis";
?></pre>
<p>php.ini ファイルの一部。 </p>
<pre class="brush:php;toolbar:false;">[セッション]
; データの保存/取得に使用されるハンドラー。
; http://php.net/session.save-handler
session.save_handler = redis
session.save_path = "tcp://localhost:6379"
; Redis 拡張モジュールを確認しています
拡張子=redis.so
; デフォルトの Redis タイムアウト
redis.timeout = 5
<p>この問題の解決に必要な情報が不足している場合は、お知らせください。よろしくお願いします。 </p>
<p>添付ファイル:
「ping」と入力すると、「pong」が返されます。
redis-cli を使用して PHP コンテナから Redis に接続できます。さらに、ここに redis.so へのパスがあります。
<code>~/usr/lib/php/20190902/redis.so</code>
php.ini へのパス (使用されるサーバーは apache2)。
<code>~/etc/php/7.4/apache2/php.ini</code></p>
大根がチームとして機能しているかどうかを確認する
redis-cli ping
答えピンポン
PHP 構成に Redis 拡張機能の正しい設定が含まれていることを確認してください。
php.ini
ファイルでredis.so
への正しいパスとその他の必要な構成が指定されているかどうかを確認してください。Php.ini ファイルを次のように調整しました。
リーリー修正する前に
調整済み
リーリー ###ありがとう。