archlinux docker配置php5.3

一直在维护一下10年前的老项目,是基于php5.3开发的。一直在使用windows虚拟机在开发php5.3。最近就想尝试在archlinux主系统中开发。

什么是php

PHP 是一种广泛使用的通用脚本语言,特别适合 Web 开发,可以嵌入到 HTML 中。

AUR安装php5.3

安装过程很久,有个文件下载非常慢。建议使用代理后在运行此命令。

yay -S php53

各种编译,时间太久了。我这电脑编译了近20分钟。

运行

虽然PHP可以独立运行,但它通常与Web服务器一起使用。这需要安装其他软件包并编辑配置文件。
因为我维护的项目是使用的是Apache,所以可以参考:
https://wiki.archlinux.org/title/Apache_HTTP_Server#PHP

docker实现

用archlinux还是搞新软件方便,感觉安装php5.3这种老软件还是用别的系统吧。所以我打算使用docker来运行这个php5.3吧。
只要把程序目录映射到docker之中,也就可以正常开发了。
比如:
https://hub.docker.com/r/seti/php53

实例

启动容器

#这个目录可以根据自己的喜好修改
BASEDIR="/var/php53"
#创建一个目录用于存放php文件
mkdir -p $BASEDIR/data/webapp
#创建一个php.ini配置文件
touch $BASEDIR/php.ini
cd $BASEDIR
NAME="php53"
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
docker run -d \
    -p 80:80 \
    -v $DIR/data/webapp:/var/www/ \
    -v $DIR/php.ini:/etc/php.ini \
    --restart=always \
    --name $NAME \
    seti/php53

运行第1个php

此时我们来运行一下第一个php文件

nvim $BASEDIR/data/webapp/info.php

内容如下:

<?php
phpinfo();
?>

浏览器中访问 http://localhost/info.php就可以查看php的基本信息了。
这对于维护老项目的我来说非常的方便。

通过这些信息,我发现其实我们配置的/etc/php.ini并没有生效。而实际加载的路径是/etc/php53/apache2/php.ini但是很神奇的是如果我不配置-v $DIR/php.ini:/etc/php.ini映射,docker容器会无限重启。

进入容器微调

通过docker的配置还是有限的,如果需要更细微的调整还是直接进入容器。把它当作虚拟机来使用吧。

docker exec -it php53 bash

可能会用到的配置文件

项目Value
apache2 目录/etc/apache2/
apache2 配置文件/etc/apache2/apache2.conf
Configuration File (php.ini) Path/etc/php53/apache2
Loaded Configuration File/etc/php53/apache2/php.ini
Scan this dir for additional .ini files/etc/php53/apache2/conf.d

mssql odbc驱动的支持(暂未成功)

我花了不少时间研究,可惜没能成功。
官方的文档:
https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver16

如果是php7.4我清楚如何做,但是php5.3我就不会了。我相信肯定有解决办法,但是我暂时找不到。

我们使用的容器是基于Ubuntu 14.04.6 LTS的。我在网上找相关资料基本都是对应新版本的。
参考:
https://sqlchoice.azurewebsites.net/en-us/sql-server/developer-get-started/php/ubuntu/

安装扩展源

主机中先下载两个文件,一会儿备用。

cd /var/php53/data/webapp
wget https://packages.microsoft.com/keys/microsoft.asc
wget https://packages.microsoft.com/config/ubuntu/14.04/prod.list      

为什么要在主机中下载,因为我在容器中无法正常安装curl

进入容器的命令行

docker exec -it php53 bash
cd /var/www
ls

此时是可以看到我们下载的两个文件的。

root@837b251408dc:/# cd /var/www
root@837b251408dc:/var/www# ls
info.php  microsoft.asc  prod.list
cat microsoft.asc | apt-key add -
#Ubuntu 14.04
cat prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
#其实我在windows中安装的是odbc10,但的我发现这个源里最低版本好像就是odbc17了
#没办法也安装odbc17试试吧
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev

安装对应的php 模块

2.1先查询出对应的模块

sudo apt-cache search php5*

比如:我找到了php53-mod-mssql

apt install php53-mod-mssql

参考
https://blog.csdn.net/qq_42078965/article/details/106268337


以下是探索过程,不需要看。踩坑过程,仅记录一下。


使用这个镜像

这里我以/var/php53/这个目录为例,可以根据自己的需要自行修改。

#创建一个目录用于存放php文件,这个目录可以根据自己的喜好修改
mkdir -p /var/php53/data/webapp
# 创建目录用于存放虚拟目录的配置文件
mkdir -p /var/php53/data/vhost
#创建一个php.ini配置文件
touch /var/php53/php.ini
cd /var/php53/
NAME="php53"
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
docker run -d \
    -p 80:80 \
    -v $DIR/data/webapp:/home/www/ \
    -v $DIR/data/vhost:/etc/httpd/vhost.d \
    -v $DIR/php.ini:/etc/php.ini \
    --restart=always \
    --name $NAME \
    seti/php53

这里发现已经可以成功访问了。如下:
在这里插入图片描述
不到1分钟的时间就搞定了。而且docker这种方式几乎是全平台兼容。所以我最终选择不折服archlinux中原生运行php5.3了。

配置VirtualHost

新增文件

vim /var/php53/data/vhost/default.conf

内容如下:

Listen 80
<VirtualHost *:80>
    DocumentRoot "/home/www/"
    ServerName localhost
</VirtualHost>

具体写法请参考:
https://httpd.apache.org/docs/2.4/vhosts/examples.html

phpinfo()

看一下php的信息吧。

vim /var/php53/data/webapp/info.php

内容如下:

<?php
phpinfo();
?>

参考

https://wiki.archlinux.org/title/PHP
https://httpd.apache.org/docs/2.4/vhosts/examples.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值