- 更新:2019-01-13 10:04:17
- 首发:2019-01-06 20:43:12
- 源代码
- 5424
2018年12月6日PHP官方发布了PHP 7.3.0 正式版
。恰逢最近在写一个PHP在线练习的网站,特意去翻了一下7.3.0正式版的Docker镜像。
因为官方镜像只包含了最基本的模块,像pdo_mysql
、redis
之类的模块并没有包含进去。在hub.docker.com
中找到一个相对比较合适的 PHP 7.2 版本的Dockerfile
(https://hub.docker.com/r/phpdocker/phpdocker/),却发现作者将MariaDB
、Redis Server
、Node.js
等内容给编进了Image。
我比较喜欢干净的Docker Image,一个镜像只做一个事情。像MySQL
、Redis
之类的数据库,可以单独启动相应的模块。
因此我在前人的基础上,移除了MariaDB
、Redis Server
、Node.js
并升级PHP版本到7.3.0正式版。
PHP模块(加粗部分是在官方PHP镜像的基础上添加的模块)
[PHP Modules] apcu bcmath bz2 calendar Core ctype curl date dom exif fileinfo filter ftp gd gettext gmp hash iconv intl json libxml mbstring memcached mysqli mysqlnd openssl pcre PDO pdo_mysql pdo_sqlite Phar posix readline redis Reflection session SimpleXML soap sockets sodium SPL sqlite3 ssh2 standard sysvmsg sysvsem sysvshm tokenizer xdebug xml xmlreader xmlrpc xmlwriter xsl zip zlib
[Zend Modules] Xdebug
Usage
DockerHub:
docker pull wy373226722/php:7.3
中国:
docker pull registry.cn-shenzhen.aliyuncs.com/yi-ge/php:7.3
Run
Example:
docker run -itd --name php -v /www:/www -w /www -p 9000:9000 wy373226722/php:7.3
You can run it use rancher or portainer.
Dockerfile
https://github.com/yi-ge/php/blob/master/Dockerfile
More
在生成Docker Image的时候,ssh2
模块报错:
Makefile:196: recipe for target 'ssh2_fopen_wrappers.lo' failed
原因是PHP 7.3不能直接安装PECL
仓库的ssh2
模块。
相关的BUG信息在:https://bugs.php.net/bug.php?id=77265#1544266627
相关的修复信息:http://git.php.net/?p=pecl/networking/ssh2.git;a=commit;h=a8835aab2c15e794fce13bd927295719e384ad2d
因此只能从仓库克隆编译:
# ssh2
RUN apt-get install -y \
libssh2-1-dev
RUN cd /tmp && git clone https://git.php.net/repository/pecl/networking/ssh2.git && cd /tmp/ssh2 \
&& phpize && ./configure && make && make install \
&& echo "extension=ssh2.so" > /usr/local/etc/php/conf.d/ext-ssh2.ini \
&& rm -rf /tmp/ssh2
在这个仓库中的Dockerfile
已经修复了该问题。
安装更多模块
2019年01月13日09:59:26 更新
如果已经创建了镜像,但是还希望增加模块。可以先进入容器:
docker exec -it 容器ID bash
使用docker-php-ext-install
命令进行安装。
root@6b44b2984da7:/www# docker-php-ext-install --help
usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]
ie: /usr/local/bin/docker-php-ext-install gd mysqli
/usr/local/bin/docker-php-ext-install pdo pdo_mysql
/usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop
if custom ./configure arguments are necessary, see docker-php-ext-configure
Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip
Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.
安装完成后重启容器即可:
docker restart 容器ID
查看是否报错:
docker logs 容器ID --tail 100
暂无内容
老师你好,我希望能用一个openwrt路由器实现IPv4和IPv6的桥接,请问我该如何实现?我尝试了直接新增dhcpv6的接口,但是效果不甚理想(无法成功获取公网的ipv6,但是直连上级路由的其他设备是可以获取公网的ipv6地)
![%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE20241205230845.png](https://cdn.wyr.me/visitor-files/2024-12-05/1733411344287屏幕截图 2024-12-05 230845.png)你好
,为什么我这里是0039 813C 0600 0075 16xx xx xx,只有前6组是相同的,博客中要前8位相同,这个不同能不能照着修改呢?我系统版本是Win1124H2
大神你好,win11专业版24h2最新版26100.2033,文件如何修改?谢谢
win11专业版24h2最新版26100.2033,Windows Feature Experience Pack 1000.26100.23.0。C:\Windows\System32\termsrv.dll系统自带的这个文件,39 81 3C 06 00 00 0F 85 XX XX XX XX 替换为 B8 00 01 00 00 89 81 38 06 00 00 90。仍然无法远程连接。原来是win11 21h2系统,是可以远程链接的。共享1个主机,2个显示器,2套键鼠,各自独立操作 各自不同的账号,不同的桌面环境。
博主,win11专业版24h2最新版,C:\Windows\System32\termsrv.dll系统自带的这个文件,找不到应该修改哪个字段。我的微信:一三五73二五九五00,谢谢