MySQL加强对PHP的支持--mysqlnd_php6

LAMP(Linux+Apache+MySQL+PHP)作为主流WEB开发架构之一,本文介绍了其组成及相互间的关系,尤其强调了MySQL与PHP之间的紧密合作,以及它们如何共同推动了彼此的发展。

众所周知,LAMP(Linux+Apache+MySQL+PHP)是现在主流的WEB开发运营架构之一,在国内外的应用非常普遍。L、A、M、P这四种软件形成的组合,是WEB行业的开发者们在长期的实践中摸索出来的,但也离不开这几个社区的互相帮助,同心协力。MySQL曾经让Oracle不屑一顾,但现在已经发展成了真正知名而且广受欢迎的数据库品牌,这才使得Oracle开始重视小企业的市场,最近正在中国热推它的OracleXE(免费,只支持4G数据,可以在这里下载),希望能从MySQL的口中夺回一块肉。MySQL的发展,开源社区起到了关键作用。不仅是MysQL社区,其它很多开发社区也为MySQL提出了无数宝贵的建议,并大力推广MysQL。

这其中,当然最重要的是PHP。正是由于PHP在全球WEB市场的流行,以及PHP默认使用MySQL为后端数据库的特性,使MySQL迅速被广大WEB开发者所接受。 MySQL公司显然也很清楚这一点,所以和PHP核心团队一直保持着良好关系,对PHP的发展很关注并大力支持。

PHP目前发展势态良好,不但PHP4很稳定地占据着WEB开发市场三分之一左右的份额(不包括中国,呵呵),PHP5也被越来越多人接受,而且PHP6也正在有条不紊的开发当中,测试版本已经可以下载到。可以预见PHP的未来仍然是光明的。

MySQL也为PHP6专门设计了一个native driver,称为mysqlnd,这是一个采用PHP开源协议(即 PHP license)的MySQL数据库驱动,避免了任何可能存在的版权问题,所以PHP开发者可以放心大胆地使用。

mysqlnd的优势在于:

1。解决了版权隐患问题,如上所述;由于版权问题,PHP5中没有默认支持MySQL,不像以前的PHP4那样可以直接使用MySQL函数。Mysql支持还需要把libmysql.dll复制到windows目录,然后修改php.ini等等,比较麻烦。
2。功能改进、效率提高,包括优化过的数据库持久化连接,这非常重要;
3。编译安装更简单。

Mysqlnd目前只支持PHP6,将来会支持PHP5,因为PHP5的接受程度一直在稳定上升,特别是很多PHP开发框架如Zend Framework等的渐渐普及,将带动PHP5的普及。

详见:http://dev.mysql.com/downloads/connector/php-mysqlnd/



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1505013


<think>我们正在处理一个关于在特定设置下安装PHP 8.3.15及其多个扩展的问题。用户要求使用`--setopt=module_hotfixes=true`和`-y`选项。根据提供的引用,有两种方法:使用包管理器(如dnf)安装预编译包,或从源代码编译安装。 引用[1]展示了使用dnf安装基本PHP包的方法,并提到了依赖关系。引用[2]则展示了从源代码编译安装PHP 8.3.15的步骤。 用户明确要求安装特定版本的扩展(如php-gd-8.3.15等),并且版本号完全一致。这通常要求安装的扩展必须与PHP主版本完全匹配。在包管理器中,通常这些扩展包会与PHP主版本同步更新,因此我们可以尝试使用包管理器安装指定版本的扩展。 但是,请注意,在包管理器(如dnf)中,包名通常不包含具体的版本号(如8.3.15),而是包含主版本(如8.3)。这是因为在同一个主版本中,扩展包会随着PHP主包的更新而更新。因此,我们无法精确指定到次版本(15)的扩展包。实际上,当我们安装php-gd时,它会自动安装与当前PHP主版本匹配的最新版本(比如8.3.15)。所以,我们只需要安装主版本为8.3的扩展包,它们自然会是8.3.x版本,并且会随着更新而升级。 另外,用户要求使用`--setopt=module_hotfixes=true`选项,这通常用于模块化仓库(module stream)中,允许安装模块外的更新(hotfixes)。在安装PHP时,如果PHP是作为一个模块(module)提供的(例如在RHEL/CentOS 8及以上),那么使用这个选项可以避免模块流(stream)的版本限制,允许安装模块外的最新版本或补丁。 但是,根据用户要求,我们需要安装PHP 8.3.15,这意味着我们可能需要启用合适的仓库。 考虑到这些,以下是两种可能的安装方法: 方法1:使用包管理器(dnf)安装 1. 确保系统启用了提供PHP 8.3的仓库。例如,在Fedora中,默认仓库可能已经提供,但在RHEL/CentOS中可能需要启用EPEL或Remi仓库。 2. 使用dnf安装PHP 8.3和所需的扩展,并指定`--setopt=module_hotfixes=true`和`-y`选项。 方法2:从源代码编译安装(如引用[2]所示) 这种方法可以精确控制版本和编译选项,但步骤较为复杂。 用户的问题中提到了扩展的精确版本(8.3.15),但包管理器通常不提供次版本级别的扩展包。因此,如果用户严格要求每个扩展都是8.3.15版本,那么只能选择从源代码编译安装。然而,在实际的包管理系统中,扩展包版本与PHP主包版本一致,所以只要主包是8.3.15,安装的扩展包也会是8.3.15(因为它们是同时构建的)。 因此,我们优先尝试使用包管理器安装。如果包管理器无法满足精确版本要求,我们再考虑源码编译。 由于用户要求使用`--setopt=module_hotfixes=true`,这表明用户可能在使用模块化的仓库(如AppStream),并且需要绕过模块流限制安装最新版本。 假设我们使用包管理器安装,步骤如下: 1. 添加包含PHP 8.3.15的仓库(如果需要)。例如,Remi仓库通常提供较新的PHP版本。 2. 使用dnf安装PHP 8.3.15及扩展,并指定选项。 但是,在标准仓库中,可能默认的PHP版本不是8.3.15,因此我们需要先启用包含PHP 8.3的仓库。 以RHEL/CentOS 8为例,我们可以启用Remi仓库: ``` sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm sudo dnf module reset php sudo dnf module enable php:remi-8.3 ``` 然后安装PHP和扩展: ``` sudo dnf install --setopt=module_hotfixes=true -y php php-gd php-bcmath php-xml php-mbstring php-ldap php-mysqlnd ``` 注意:这里我们没有在扩展包名中指定版本,因为dnf会自动安装与php主包相同版本的扩展(即8.3.15,如果仓库中该版本可用)。同时,使用`--setopt=module_hotfixes=true`可以确保即使模块流中有冲突,也能安装。 如果用户的环境不是RHEL/CentOS 8,而是其他发行版(如Fedora),步骤可能不同。 另外,如果用户坚持要从源代码编译安装,我们可以提供类似于引用[2]的步骤,并添加所需的扩展编译选项(如--enable-gd, --enable-bcmath, --enable-xml, --enable-mbstring, --enable-ldap, --with-mysqlnd)。但是,用户要求中提到了使用`--setopt`和`-y`,这显然是包管理器的选项,所以用户可能更倾向于使用包管理器安装。 因此,我们将重点放在包管理器方法上。 然而,问题中要求安装的扩展包括php-ldap和php-mysqlnd,这些在引用[1]的弱依赖中没有提到,但在编译选项(引用[2])中包含了--with-mysqli(对应php-mysqlnd)和--with-ldap(对应php-ldap)?实际上,在包管理器安装中,我们需要明确列出这些扩展包。 在RHEL/CentOS中,php-mysqlnd是一个单独的包,而php-ldap也是。所以我们在安装命令中直接列出即可。 综上所述,我们给出使用dnf(假设系统是RHEL/CentOS 8)的安装步骤: 步骤: 1. 添加Remi仓库(如果尚未添加)并启用PHP 8.3模块流。 2. 使用dnf命令安装PHP及扩展,并指定选项。 具体命令: ```bash # 添加Remi仓库(如果尚未添加) sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm # 重置PHP模块(如果之前启用过其他版本) sudo dnf module reset -y php # 启用PHP 8.3模块流 sudo dnf module enable -y php:remi-8.3 # 安装PHP 8.3.15及所需扩展 sudo dnf install --setopt=module_hotfixes=true -y php php-gd php-bcmath php-xml php-mbstring php-ldap php-mysqlnd ``` 注意:上述命令中的`--setopt=module_hotfixes=true`用于确保在模块流环境中可以安装模块外的更新包。`-y`选项用于自动确认安装。 验证安装: 安装完成后,可以运行以下命令检查版本: ```bash php -v ``` 以及检查扩展是否安装: ```bash php -m | grep -E 'gd|bcmath|xml|mbstring|ldap|mysqlnd' ``` 如果用户使用的是其他发行版(如Fedora或Ubuntu),则需要调整仓库添加步骤。但用户问题中引用了dnf,所以应该是基于RHEL/Fedora的系统。 如果用户确实需要从源代码编译(例如,包管理器中没有恰好为8.3.15的包),我们可以提供编译步骤。但根据Remi仓库的实践,它会及时更新到最新的PHP版本,所以很可能有8.3.15。 因此,我们优先推荐包管理器安装方法。 如果用户需要源码编译安装,我们将基于引用[2]的步骤进行修改,添加所需的扩展选项,并确保版本为8.3.15。 </think>### 在特定设置下安装PHP 8.3.15及扩展的方法 #### 方法1:通过DNF包管理器安装(推荐) ```bash # 添加包含PHP 8.3的仓库(如Remi仓库) sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm # 启用PHP 8.3模块流 sudo dnf module reset -y php sudo dnf module enable -y php:remi-8.3 # 安装PHP核心及指定扩展(使用--setopt参数) sudo dnf install --setopt=module_hotfixes=true -y \ php-8.3.15 \ php-gd-8.3.15 \ php-bcmath-8.3.15 \ php-xml-8.3.15 \ php-mbstring-8.3.15 \ php-ldap-8.3.15 \ php-mysqlnd-8.3.15 ``` #### 方法2:源码编译安装(精确版本控制) ```bash # 下载PHP源码 wget https://www.php.net/distributions/php-8.3.15.tar.gz tar xzf php-8.3.15.tar.gz cd php-8.3.15 # 配置编译选项(包含所有所需扩展) ./configure \ --prefix=/usr/local/php8.3 \ --enable-gd \ --enable-bcmath \ --enable-xml \ --enable-mbstring \ --with-ldap \ --with-mysqlnd \ --with-openssl \ --with-zlib \ --with-curl # 编译安装 make -j$(nproc) sudo make install # 验证安装 /usr/local/php8.3/bin/php -v /usr/local/php8.3/bin/php -m | grep -E 'gd|bcmath|xml|mbstring|ldap|mysqlnd' ``` #### 关键参数说明: 1. `--setopt=module_hotfixes=true`:允许安装模块外部的更新包,确保版本一致性[^1] 2. `-y`:自动确认所有安装提示 3. 扩展说明: - `php-gd`:图像处理 - `php-bcmath`:高精度数学计算 - `php-xml`:XML解析 - `php-mbstring`:多字节字符串处理 - `php-ldap`:目录服务支持 - `php-mysqlnd`:MySQL原生驱动
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值