archlinux docker配置php5.3

2023-05-16

一直在维护一下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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

archlinux docker配置php5.3 的相关文章

随机推荐

  • Unable to load dynamic library ext/php_ldap.dll

    现象 报错如下 xff1a Unable to load dynamic library span class token string 39 D wamp bin php php5 3 10 ext php ldap dll 39 spa
  • Windows 文件比较工具winmerge

    今天下载了一个非常强大的文件比较工具推荐给大家 开源免费的 xff01 xff01 xff01 什么是WinMerge xff1f WinMerge是Windows的开源差异和合并工具 WinMerge 可以比较文件夹和文件 xff0c 以
  • wamp运行php5.3 You don‘t have permission to access

    最近在运维一个有10年历史的老项目 基于WampServer Version 2 2的 在自己本机部署以后报错如下 xff1a 报错 Forbidden You don 39 t have permission to access on t
  • NotePad++右键菜单修改

    不清楚为什么我安装NotePad 43 43 没有右键菜单 大多数时候安装完成就有的 少数遇到安装完右键菜单没有 方法 把下面的C Program Files Notepad 43 43 notepad 43 43 exe替换成你的安装路径
  • php5应用程序无法启动,因为应用程序的并行配置不正确

    在windows 2008中配置php5就各种失败 xff0c 按照网上教程一步步来也不行 但是我在windows7 windows11 和windows server 2019都成功了 到底是什么原因导致的呢 xff1f 就在我想双击运行
  • vmware16安装windows server 2008 VMware Tools

    vmware16安装windows server 2008 安装完成后不会自动安装VMware Tools 而是出现如下提示 xff1a 简易安装正在安装Windows Server 2008 R2 x64 安装完操作系统后 xff0c 需
  • 自制macOS安装镜像iso虚拟机用

    在网上下载的用于在虚拟机中安装的镜像版本相对比较旧 安装完成后还要进行升级比较麻烦 于是我就想自己制作安装镜像了 精华 span class token comment 创建空白磁盘镜像 span hdiutil create span c
  • 【Android Studio】Could not resolve com.google.guava:guava:30.1-jre

    问题描述 导入Android项目并构建 xff0c 出现 Error xff1a Could not resolve com google guava guava 30 1 jre 分析解决 原来是build gradle文件中少添加了jc
  • macos13 Ventura虚拟机安装无网络问题

    关键 xff1a 打开虚拟机所在文件夹 xff0c 修改vmx文件 xff0c 将 ethernet0 virtualDev 61 34 e1000e 34 改为 ethernet0 virtualDev 61 34 vmxnet3 34
  • 超2周没更新archlinux 更新报错

    报错信息 span class token punctuation span span class token number 448 span 448 span class token punctuation span 正在检查密钥环里的密
  • 2023安装archlinux笔记

    本文只是个笔记 xff0c 不是详细教程 xff0c 仅供参考 安装过程基本与 2021年vmware安装archlinux https blog csdn net lxyoucan article details 115226297 差不
  • 命令行临时关闭Hyper-V功能

    背景 安装VMware时有如下提示 xff1a 命令行关闭Hyper V功能 xff08 1 xff09 以管理员身份 xff08 win 43 x xff09 运行命令提示符 xff1b xff08 2 xff09 执行命令 xff1a
  • debian安装ssh服务

    安装 span class token function apt get span span class token function install span openssh server 安装完成以后 可以通过以下命令看到它们运行的进程
  • kitty 终端使用ssh

    我的主要终端软件就是使用kitty 但是在kitty中直接使用ssh时会有一些小问题 比如 xff1a ranger htop这类的在命令行中的 图形 软件打开会报错 Error opening terminal xterm kitty c
  • archlinux 罗技K380 F1-F12 功能键锁定

    在windows中罗技K380可以安装Logitech Options来实现这个Fn锁定功能 在linux中如何实现 Logitech Options中没有linux版本的 有开发者针对罗技的无线设备开发了Solaar软件 xff0c 可以
  • linux中的图形化UDP调试工具

    sokit freeware version 1 3 1 GPLv3 website https github com sinpolib sokit 这是一个TCP UDP数据包收发和传输工具 linux汉化 默认是英文版本的 xff0c
  • UDP内网穿透实战

    场景 最近的项目在做设备对接功能 设备对接协议使用的是UDP协议的 设备在客户那 因为设备太昂贵搬过来不现实 驻场开发又太麻烦了 所以就只能在远程桌面中开发 远程桌面中开发束手束脚的太麻烦了 所以想到了内网穿透 tcp协议的穿透经常玩 UD
  • sqlserver数据库备份与还原的几种方式

    在开发与运维的过程中 xff0c 数据的备份与还原是经常用到的 今天就说说我在sqlserver中常用的几个方法 xff0c 仅供参考 SQL Server Management Studio备份与还原 这种方法在开发环境中经常使用 xff
  • MySQL必知必会系列一:数据库老师没教过的数据库知识!!!

    在讲MySQL之前 xff0c 关于数据库有一个非常有意思的现象 xff1b 许多人认为MySQL或者Oracle等 xff0c 都等同于数据库 xff0c 这是不正确的 xff0c 准确来说它们是DBMS Database Managem
  • archlinux docker配置php5.3

    一直在维护一下10年前的老项目 xff0c 是基于php5 3开发的 一直在使用windows虚拟机在开发php5 3 最近就想尝试在archlinux主系统中开发 什么是php PHP 是一种广泛使用的通用脚本语言 xff0c 特别适合