在linux下php挂接mysql.so扩展的方法
总结的方向:在linux下php挂接mysql.so扩展的方法 问题背景:平常我们都是先安装mysql,然后才能去安装php。假如先安装php,后安装mysql,由于php需要连接mysql,因而在php引擎中需要配置使用mysql.so扩展。这时需要手动编译生成mysql.so扩展。 当前问题:在
总结的方向:在linux下php挂接mysql.so扩展的方法
问题背景:平常我们都是先安装mysql,然后才能去安装php。假如先安装php,后安装mysql,由于php需要连接mysql,因而在php引擎中需要配置使用mysql.so扩展。这时需要手动编译生成mysql.so扩展。
当前问题:在上面情况下,使用phpize能否实现挂接mysql.so扩展?
实践结论:使用phpize工具能够生成mysql.so,但是必须加上"--with-mysql=mysql客户端的路径"。也就是mysql.so模块必须用到mysql客户端才行。
可以这样理解,mysql.so内部会调用mysql客户端,以便实现连接mysql数据库服务器。
我们常常用到的mysql_connect()可能就是调用了mysql客户端才能完成连接数据库的操作。
一、为什么书中一般是常常是这样的顺序安装:先安装mysql,然后再安装php,很少看到先安装php,后安装mysql?
这样做。是基于下面原因:
安装好mysql后。mysql.so这个模块才能生成。记得一个细节:在安装php的时候,需要提供mysql的路径。由php帮助编译生成mysql.so模块。mysql.so这个模块是在安装好php的时候生成的。生成这个模块需要用到一个东西:
mysql客户端。如果先安装php,后安装mysql。那么无法按照原来的方式(由php帮助生成mysql.so模块)挂接mysql.so。通过实践,发现使用phpize工具生成mysql.so可以解决这个问题。
二、实践生成mysql.so的过程
大体思路:需要用到php的源码包才行。通过源码包中提供的phpize文件(一个专门挂接php扩展的工具)
2011.3.6测试成功
使用命令: phpize --with-mysql=/usr/local/mysql/(mysql的安装路径)
第一步:进入php源码中的"ext/mysql"目录下
命令:cd
第二步:在当前目录下运行phpize
命令:/usr/local/php524/bin/phpize
phpize的规则:去哪个目录下运行phpize文件,那么就会在该目录下生成一个configure文件。
第三步:运行刚才生成的configure文件
命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/
这里最关键的是通过--with-mysql参数告诉mysql客户端的位置。这样才能生成mysql.so。
实验的时候,没有加这个参数,结果错误:
./configure --with-php-config=/usr/local/php524/bin/php-config
第四步:编译生成.so文件。最终要的东西
make
make install
结束/////////////////////////////////////////////////////////
第五步:配置php引擎加载该扩展
省略
补充一下:就是去php.ini文件中修改一下配置,加载mysql.so这个扩展(这个扩展文件要放到php指定的扩展目录下面去)
第六步:测试php引擎是否成功加载该扩展
编写文件phpinfo.php,内容是:
ehco phpinfo();
?>
运行后,可以看到有如下信息显示:
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.1.55
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
通过这样的方式可以确认,php引擎已经成功加载了mysql.so扩展。
第七步:已经生成的mysql.so。编写php代码测试是否能连接mysql
第六步成功后,已经知道php引擎已经成功加载了mysql.so扩展。还要确认生成的扩展是否能正常使用。为什么?因为编译失败还是成功都能生成.so的扩展。一般是这样的:.so扩展里面其实封装的就是一些函数,供我们调用
。假如有些函数没有生成,最后也会得到.so的扩展。也许它的.so模块内部是不完整的,都说不定。之前做一个支付接口的时候就是这样的问题。.so模块里面是用c++语言封装的函数。模块虽然已生成。但是并不能正常运行
。函数出现了异常,看不到任何错误。后来形成一个观念:不能以为,编译生成了.so文件,就认为是成功的
测试.so是否能用变得非常必要。现在测试一下生成的mysql.so是否能用。
编写如下php代码:
$conn = mysql_connect("localhost","root","");
mysql_select_db("mysql",$conn);
$results = mysql_query("select * from user");
$row = mysql_fetch_array($results);
var_dump($row);
?>
得到结果(部分):
array
0 => string 'localhost' (length=9)
'Host' => string 'localhost' (length=9)
1 => string 'root' (length=4)
'User' => string 'root' (length=4)
2 => string '' (length=0)
'Password' => string '' (length=0)
3 => string 'Y' (length=1)
'Select_priv' => string 'Y' (length=1)
4 => string 'Y' (length=1)
'Insert_priv' => string 'Y' (length=1)
5 => string 'Y' (length=1)
'Update_priv' => string 'Y' (length=1)
说明,编译生成后的mysql.so扩展能够正常使用了。
启发:如果开始安装mysql和php的顺序不对,后面就会增加了很多麻烦。所以,在实际情况中,有点经验的都会"会先安装php,再安装mysql",这样避免了挂接的问题。所以,实际中需要这样做很少。
假如这样一种情况就有用了:php与mysql都已经安装了。后面根据需要,想安装oracle等其他数据库,php已经安装了。编译生成一个其他数据库的扩展,思路也是一样的

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Docker 환경을 사용할 때 Docker 환경에 Extensions를 설치하기 위해 PECL을 사용하여 오류의 원인 및 솔루션. 종종 일부 두통이 발생합니다 ...

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

많은 웹 사이트 개발자는 램프 아키텍처에서 Node.js 또는 Python 서비스를 통합하는 문제에 직면 해 있습니다. 기존 램프 (Linux Apache MySQL PHP) 아키텍처 웹 사이트 요구 사항 ...

Linux 터미널에서 Python 사용 ...

Linux 시스템과 함께 제공되는 Python 통역사를 제거하는 문제와 관련하여 많은 Linux 배포판이 설치 될 때 Python 통역사를 사전 설치하고 패키지 관리자를 사용하지 않습니다 ...

Apscheduler 타이밍 작업을 MacOS 플랫폼의 서비스로 구성하십시오. Ngin과 유사한 APSCHEDULER 타이밍 작업을 서비스로 구성하려면 ...
