php编译安装apache2

php编译安装+apache2

一、为什么要使用编译安装

编译安装优点

定制化: 编译安装允许您根据特定需求进行定制,选择所需的功能、模块和库,通过手动调整编译选项和优化标志,可以针对特定硬件和操作系统进行优化
新功能和补丁: 可以优先获取最新版本,不用等预编译版本的更新

预编译安装优点

方便: 预编译安装是无需编译直接通过包管理工具下载已经编译好的,无需自己编译
安装模块方便: 可直接通过包管理工具下载已经编译好的模块,而自己编译安装需要重新编译才能更改模块

二.编译php

1、安装编译所需依赖

1
apt update && apt install make gcc libxml2-dev apache2-dev apache2 -y

2、编译

1
2
3
4
wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar -zxvf php-5.6.40.gz
cd php-5.6.40.gz
./configure --prefix=/usr/local/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd --with-apxs2=/usr/bin/apxs2 --enable-maintainer-zts
  • –prefix=/usr/local/php 设置安装路径
  • –enable-mysqlnd 启用 mysqlnd(MySQL Native Driver)支持,使用原生的 MySQL 驱动程序
  • –with-pdo-mysql=mysqlnd 指定使用 mysqlnd 驱动程序作为 PDO (PHP Data Objects) 的 MySQL 驱动
  • –with-mysql=mysqlnd 指定使用 mysqlnd 驱动程序作为 MySQL 扩展的后端
  • –with-mysqli=mysqlnd 指定使用 mysqlnd 驱动程序作为 MySQLi 扩展的后端
  • –with-apxs2=/usr/bin/apxs2 启动apache2模块支持,并指定apxs2二进制文件路径用于编译apache2的模块(安装apache2-dev带的)
  • –enable-maintainer-zts 开启线程安全(如果Apache 使用了线程式的 MPM,会启动不了)
1
make && make install

三、让apache2成功执行php

1、添加配置apache2

1
vim /etc/apache2/apache.conf

添加mine类型,让apache能正常处理.php后缀文件

1
AddType application/x-httpd-php .php

让apache2把.php后缀的文件给php解释器处理

2、添加php hello world代码

1
vim /var/www/html/index.php

添加Hello,World!页面测试

1
2
3
\<?php
echo "Hello, World!";
?>

3、重启apache2

1
systemctl restart apache2

4、测试

如果通过网页能够正常显示Hello, World!那就表示成功了

5、错误

**Warning: mysql_connect(): No such file or directory in ***
原因是在连接数据库时,默认情况下使用本地套接字(Unix域套接字)进行通信,需要在配置文件中指定套字节的路径

查看套字节的路径

登录mysql

1
mysql

查看mysql 状态

1
status

mysql Ver 15.1 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Connection id: 10
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ‘’
Using delimiter: ;
Server: MariaDB
Server version: 10.6.12-MariaDB-0ubuntu0.22.10.1 Ubuntu 22.10
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb3
Conn. characterset: utf8mb3
UNIX socket: /run/mysqld/mysqld.sock
Uptime: 37 min 39 sec
Threads: 1 Questions: 47 Slow queries: 0 Opens: 29 Open tables: 19 Queries per second avg: 0.020

配置php.ini

1
vim /usr/local/php/lib/php.ini

添加socket文件路径

1
2
3
mysql.default_socket = /run/mysqld/mysqld.sock
mysqli.default_socket = /run/mysqld/mysqld.sock
pdo_mysql.default_socket = /run/mysqld/mysqld.sock