WordPress 提示“上传的文件大小超过 php.ini 文件中定义的 upload_max_filesize 值”是一个常见问题,意味着 PHP 配置中的文件上传大小限制太小。由于你的 WordPress 运行在 Docker 容器中,你需要以正确的方式修改其 PHP 配置。
步骤 1: 创建自定义 PHP 配置文件
首先,在你 WordPress 项目的目录下(wordpress_site 目录),创建一个新的子目录,例如 config,并在其中创建一个 uploads.ini 文件。
cd wordpress_site
mkdir -p config
touch config/uploads.ini
然后,编辑 config/uploads.ini 文件,添加或修改以下 PHP 配置指令:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300
说明:
upload_max_filesize:允许上传的单个文件最大大小。
post_max_size:POST 请求发送数据的最大大小。这应该大于或等于 upload_max_filesize。
memory_limit:PHP 脚本可以消耗的最大内存量。WordPress 有时需要更多内存。
max_execution_time:脚本的最大执行时间(秒)。上传大文件可能需要更长时间。
max_input_time:脚本解析输入数据允许的最大时间(秒)。
你可以根据需要调整这些值,例如,如果你需要上传更大的文件,可以设置为 128M 或 256M。
修改 docker-compose.yml 文件
接下来,你需要修改 wordpress_site 目录下的 docker-compose.yml 文件,让 WordPress 容器在启动时使用你刚刚创建的 uploads.ini 文件。
找到 wordpress 服务部分,在 volumes 下添加一行,将你创建的 uploads.ini 文件挂载到 WordPress 容器的 PHP 配置目录中。
version: '3.3'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password # 替换为你的MySQL root密码
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: your_wordpress_db_password # 替换为WordPress数据库用户的密码
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80" # 将WordPress容器的80端口映射到主机的8080端口
environment:
WORDPRESS_DB_HOST: db:3306 # 数据库服务名称和端口
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: your_wordpress_db_password # 替换为WordPress数据库用户的密码
WORDPRESS_DB_NAME: wordpress_db
volumes:
- wordpress_data:/var/www/html
- ./config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini # ⬅️ 添加这一行
depends_on:
- db
volumes:
db_data:
wordpress_data:
说明:
./config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:这一行将宿主机上的 config/uploads.ini 文件挂载到 WordPress 容器内部的 /usr/local/etc/php/conf.d/ 目录。这是 PHP 加载额外配置文件的标准位置,Docker 官方的 WordPress 镜像会自动加载此目录下的 .ini 文件。
保存 docker-compose.yml 文件后,你需要重启 WordPress 服务以使更改生效。在 wordpress_site 目录下运行:
docker-compose down
docker-compose up -d
暂无评论内容