>  기사  >  PHP 프레임워크  >  Swoole 확장 설치에 ​​실패한 경우 수행할 작업

Swoole 확장 설치에 ​​실패한 경우 수행할 작업

藏色散人
藏色散人원래의
2020-02-04 15:06:343918검색

Swoole 확장 설치에 ​​실패한 경우 수행할 작업

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.ini

3의 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 0

Solution 방법은 다음과 같습니다. 유사:

1 /etc/php.d/ 디렉토리 2에서 소켓.ini 파일을 삭제합니다. =swoole.so 위 줄

3에 확장자=sockets.so를 추가합니다. php-fpm

을 다시 시작합니다.

위 내용은 Swoole 확장 설치에 ​​실패한 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.