ホームページ  >  記事  >  PHPフレームワーク  >  swoole 拡張機能のインストールが失敗した場合の対処方法

swoole 拡張機能のインストールが失敗した場合の対処方法

藏色散人
藏色散人オリジナル
2020-02-04 15:06:343927ブラウズ

swoole 拡張機能のインストールが失敗した場合の対処方法

swoole 拡張機能のインストールが失敗した場合はどうすればよいですか? swoole インストール エラーの詳細な説明

推奨学習: swoole チュートリアル

今日は pecl を介して swoole をインストールしました

pecl install swoole

手順は非常に簡単です, しかし、最終的にインストールは成功しました その後、phpinfo() で swoole 拡張機能が表示されていないことに気付き、

php -m | grep swoole

を実行すると、次のエラーが見つかりました:

PHP 警告: PHP 起動: ダイナミック ライブラリ '/usr/lib64/php/modules/swoole.so' をロードできません - /usr/lib64/php/modules/swoole.so: 未定義のシンボル: mysqlnd_find_charset_nr (行 0## に不明)

#エラー レポートを注意深く見てみると、このエラー レポートは swoole が原因であることがわかりました。swoole.so の読み込み時に mysqlnd_find_charset_nr が見つからないことを示す .so が報告されています。これは、mysqlnd で始まるキーワードであり、 mysqlnd は PHP の拡張機能です。swoole/swoole.mysql.c を読むと、ソース コードの次のセクションが見つかりました:

const MYSQLND_CHARSET* cset = mysqlnd_find_charset_nr(client->connector.character_set);
 
if (cset == NULL)
{
 
    swoole_php_fatal_error(E_ERROR, "unknown mysql charset[%s].", client->connector.character_set);
 
    RETURN_FALSE;
 
}

上記のソース コードから、swoole は msyqlnd 拡張機能に依存する必要があることがわかります。 phpinfo() に msyqlnd 拡張機能が存在することがわかりました。なぜこれが報告されるのですか? 違います。

最後に、デフォルトで PHP によってロードされる拡張機能がディレクトリ /usr/lib64/php/modules/ にあることがわかりました。ここの .so ファイルはデフォルトでロードされます。これらの拡張機能の構成は、 /etc/php.ini ですが、/etc/php.d/ ディレクトリにあります。このディレクトリ内のすべての .ini ファイルは、/etc/php.ini がロードされた後にロードされ、extension=swoole です。so の設定は次のように書かれています。 /etc/php.ini ファイルの最後にあるため、swoole.so が最初にロードされ、次に mysqlnd.so がロードされるため、swoole は mysqlnd_find_charset_nr を見つけられません。

解決策:

1. /etc/php.d/ ディレクトリ内の mysqlnd.ini ファイルを削除します

2. /etc/php.ini の extension=swoole.so の上の行に extension=mysqlnd.so を追加します。

3. php-fpm を再起動します

これで問題は解決します。次のエラーが発生する場合もあります:

PHP 警告: PHP 起動: 動的ライブラリ '/usr/lib64/php/modules/swoole.so' - /usr/lib64/php/ modules をロードできません/swoole.so: 未定義のシンボル: php_sockets_le_socket in Unknown on line 0

解決策は同様です:

1. /etc/php を変更します ソケットを削除します.ini ファイルを .d/ ディレクトリに追加します。

2. /etc/php.ini の extension=swoole.so の上の行に extension=sockets.so を追加します。

3. php- を再起動します。 fpm

以上がswoole 拡張機能のインストールが失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。