Swoole 확장 프로그램 설치에 실패하면 어떻게 해야 하나요? swoole 설치 오류에 대한 자세한 설명
추천 학습: swoole tutorial
오늘 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 in Unknown on line 0# 🎜🎜#
오류 보고서를 주의 깊게 살펴보면 이 오류 보고서가 swoole.so에 의해 보고된 것으로 나타났습니다. 이는 mysqlnd_find_charset_nr을 찾을 수 없음을 나타냅니다. swoole.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.Extended에 의존해야 한다는 것을 알 수 있습니다. msyqlnd 확장이 phpinfo()에 존재하는 것을 발견했는데, 이 오류가 보고되는 이유는 무엇입니까? 마지막으로, PHP가 기본적으로 로드하는 확장은 /usr/lib64/php/modules/ 디렉터리에 있다는 것을 알았습니다. 여기에 있는 .so 파일은 기본적으로 로드됩니다. /etc/php.ini가 아니라 /etc/php.d/ 디렉토리에 있습니다. 이 디렉토리의 모든 .ini 파일은 /etc/php.ini가 로드된 후에 로드되며 확장자는 swoole.so의 구성입니다. /etc/php.ini 파일 끝에 기록되므로 swoole.so가 먼저 로드된 다음 mysqlnd.so가 로드되어 swoole이 mysqlnd_find_charset_nr을 찾지 못하게 됩니다.
해결책:
1 /etc/php.d/ 디렉토리에서 mysqlnd를 변경합니다. 파일 삭제
2. /etc/php.ini3의 Extension=swoole.so 위 줄에 Extension=mysqlnd.so를 추가합니다. 🎜#이 방법으로 문제를 해결할 수 있습니다. 다음 오류가 발생할 수도 있습니다.
PHP 경고: PHP 시작: 동적 라이브러리 '/usr/lib64 /php를 로드할 수 없습니다. /modules/swoole.so' - /usr/lib64/php/modules/swoole.so: 정의되지 않은 기호: php_sockets_le_socket in Unknown on line 0Solution 방법은 다음과 같습니다. 유사:
1 /etc/php.d/ 디렉토리 2에서 소켓.ini 파일을 삭제합니다. =swoole.so 위 줄
3에 확장자=sockets.so를 추가합니다. php-fpm
을 다시 시작합니다.위 내용은 Swoole 확장 설치에 실패한 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!