我無法使用 php 連接到 redis
<p>我無法使用 php 連接到 redis。
我用docker搭建了一個環境,嘗試用php和redis容器從php連接redis,但失敗了。我收到以下錯誤。 </p>
<pre class="brush:php;toolbar:false;">PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib/php/20190902/redis.so (/ usr/lib/php/20190902/redis.so: undefined symbol: php_json_decode_ex), /usr/lib/php/20190902/redis.so.so (/usr/lib/php/20190902/redis.sooo. shared object file: No such file or directory)) in Unknown on line 0
PHP Notice: session_start(): Redis not available while creating session_id in /var/www/html/index.php on line 2
PHP Warning: session_start(): Failed to read session data: redis (path: tcp://localhost:6379) in /var/www/html/index.php on line 2
string(0) ""
save_handler=redis
save_path=tcp://localhost:6379
session_id=</pre>
<p>這是為回應錯誤而執行的 php 檔案。 </p>
<pre class="brush:php;toolbar:false;"><?php
session_start();
ini_set('session.cookie-domain', 'localhost');
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;">[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = redis
session.save_path = "tcp://localhost:6379"
;verifying redis extension module
extension = redis.so
; default redis timeout
redis.timeout = 5</pre>
<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>