archlinux docker配置php5.3

news2024/9/24 19:25:06

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言进阶】了解计算机的程序环境和预处理过程 掌握计算机预处理操作

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C语言进阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录1.编译与链接1.1 程…

WebGPU学习(4)---使用 UniformBuffer

接下来让我们使用 UniformBuffer。UniformBuffer 是一个只读内存区域&#xff0c;可以在着色器上访问。 这次&#xff0c;我们将传递给着色器的矩阵存储在 UniformBuffer 中。演示示例 1.在顶点着色器中的 UniformBuffer 这次我们在顶点着色器里定义一个名为Uniforms的新结构体…

TCP 的演化史-sack 与 reordering metric

就着 TCP 本身说事&#xff0c;而不是高谈阔论关于它是如何不合时宜&#xff0c;然后摆出一个更务虚的更新。 从一个 case 开始。 按照现在 Linux TCP(遵守 RFC) 实现&#xff0c;以下是一个将会导致 reordering 更新的 sack 序列&#xff1a; 考虑一种情况&#xff0c;这两个…

【Spring】谈谈你对IOC和AOP理解(2023最新)

目录一.IOC(Inversion of Control)1.IOC是什么&#xff1f;2.IOC的实现原理二.AOP(Aspect Oriented Programming)1.AOP是什么&#xff1f;2.AOP的实现原理3.说一下AOP都有哪些基本理念&#xff1f;或者是AOP的术语4.Advice(通知)的类型有哪些5.AOP的应用场景6.使用AOP实例(日志…

jvisualvm远程监控Java程序

启用远程监控&#xff1a; 方式一&#xff1a;启动参数进行配置 启动远程应用需指定jmx相关配置 java -jar -Djava.rmi.server.hostname远程服务ip -Dcom.sun.management.jmxremote.port18888 -Dcom.sun.management.jmxremotetrue -Dcom.sun.management.jmxremote.sslfa…

运动耳机推荐、最值得入手的运动耳机清单共享

现在市面上各式各样的运动蓝牙耳机着实让人挑花了眼,怎样才能从纷繁复杂的市场中挑选出专业性、安全性、舒适性等各个方面都做地可圈可点的运动蓝牙耳机可真不是一件易事啊&#xff0c;甚至连不少老朋友都会踩坑&#xff0c;为了能让大家挑到真正的运动蓝牙耳机&#xff0c;为此…

Dev C++ 调试功能详细总结

原文链接&#xff1a; Dev C 调试功能详细总结https://mp.weixin.qq.com/s/H9VwLNcJ0tY3j3265R0_7Q 大家好&#xff0c;我是CodeAllen&#xff08;康哥&#xff09;&#xff0c;今天是2023年2月25日&#xff0c;继上一篇介绍了我在Windows端经常用来验证代码的工具Dev C的基本…

pytest测试框架——pytest.ini用法

这里写目录标题一、pytest用法总结二、pytest.ini是什么三、改变运行规则pytest.inicheck_demo.py执行测试用例四、添加默认参数五、指定执行目录六、日志配置七、pytest插件分类八、pytest常用插件九、改变测试用例的执行顺序十、pytest并行与分布式执行十一、pytest内置插件h…

【经典蓝牙】蓝牙AVRCP协议分析

协议简介 蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制&#xff0c;以及获取手机的音乐信息等场景。AVRCP协议有两个角色&#xff0c;分别是controller&#xff08;CT&#x…

MFC 使用GridCtrl表格控件

1、以前使用GridCtrl大多作为静态库&#xff0c;但是程序使用的时候体积会很大&#xff0c;有网友询问能不能封装为动态库使用&#xff0c;刚好最近抽空仔细看了一下&#xff0c;封装出来。 2、具体封装过程不再赘述&#xff0c;具体测试如下所示&#xff1a; CGridCtrl m_Gri…

JavaScript Window

文章目录JavaScript Window浏览器对象模型 (BOM)Window 对象Window 尺寸其他 Window 方法JavaScript Window 浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"。 浏览器对象模型 (BOM) 浏览器对象模型&#xff08;Browser Object Model (BOM)&#xff09;…

LeetCode100_100. 相同的树

LeetCode100_100. 相同的树 一、描述 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q […

【数据结构】手撕红黑树

目录 一、红黑树简介 1、红黑树的简介 2、红黑树的性质 二、红黑树的插入&#xff08;看叔叔的颜色就行&#xff09; 1、为什么新插入的节点必须给红色&#xff1f; 2、插入红色节点后&#xff0c;判定红黑树性质是否被破坏 2.1情况一&#xff1a;uncle存在且为红 2.2情…

微信商城小程序怎么做_分享实体店做微信商城小程序制作步骤

各行各业都在用微商城小程序开店&#xff0c;不管是餐饮店还是便利店&#xff0c;还是五金店。都是可以利用微信小程序开一个线上店铺。实现线上跟线下店铺更加全面的结合。维护好自己的老客户。让您的客户给您拉新&#xff0c;带来新客户。小程序经过这几年的快速发展和不断升…

【量化回测必看!】Backtrader保姆级教学+免费行情源 框架介绍

前言 想开始量化学习不知道如何入手&#xff1f;市面上的学习资料太多不知道该怎么看&#xff1f; 博主将从零基础讲解回测框架&#xff0c;一步步完成量化数据源的搭建&#xff0c;让你10天内成为量化高手 博主同时将视频课程内容在B站更新&#xff0c;可以关注“量化NPC”获…

学习 Python 之 Pygame 开发魂斗罗(五)

学习 Python 之 Pygame 开发魂斗罗&#xff08;五&#xff09;继续编写魂斗罗1. 加载地图2. 修改角色尺寸和地面高度继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗&#xff08;四&#xff09;中&#xff0c;我们完成了角色的移动和跳跃还有射击&#xff0c;由…

Redis源码---整体架构

目录 前言 Redis目录结构 前言 deps目录 src 目录 tests 目录 utils 目录 重要的配置文件 Redis 功能模块与源码对应 前言 服务器实例 数据库数据类型与操作 高可靠性和高可扩展性 辅助功能 前言 以先面后点的方法推进无特殊说明&#xff0c;都是基于 Redis 5.0.…

AI Codec,视频模板技术,高效视频处理,RTC+AI,感知编码,CV-CUDA,窄带高清AI...

AI Codec&#xff0c;NPU硬件加速Topic《基于AI和NPU的Codec变革》孔德辉 中兴微电子 多媒体技术总监伴随通信容量&#xff08;包括5G以及千兆有线网络&#xff09;的发展&#xff0c;高带宽为更多用户接入超高清视频提供了可能。但是随着用户数量的增加&#xff0c;高质量的压…

排序基础之选择排序法

目录 前言 一、什么是选择排序 二、实现选择排序 三、使用泛型扩展 四、使用自定义类型测试 前言 今天天气不错&#xff0c;这么好的天气不干点啥实在是有点可惜了&#xff0c;于是乎&#xff0c;拿出键盘撸一把&#xff01; 来&#xff0c;今天来学习一下排序算法中的选…

港科夜闻|全国政协副主席梁振英先生率香港媒体高管团到访香港科大(广州)...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、全国政协副主席梁振英先生率香港媒体高管团到访香港科大(广州)。2月21日下午&#xff0c;在全国政协副主席、广州南沙粤港合作咨询委员会顾问梁振英先生的带领下&#xff0c;香港20余家媒体的高管及知名媒体人士到访香港科大…