I deployed this Wordpress kubernetes container: https://console.cloud.google.com/marketplace/details/google/wordpress?project
But I have a problem with upload the theme in Wordpress. The uploaded file exceeds the upload_max_filesize directive in php.ini.
I can't find the file: php.ini. in the pods of kubernetes.
I tried to use plugin for edit php.ini in Wordpress https://wordpress.org/plugins/php-settings/ but it's no write the file.
Could someone help me with a step-by-step guide to modify the container's yaml or other solution?
This is what I did to resolve the issue:
I added these lines to my Dockerfile
RUN touch /usr/local/etc/php/conf.d/uploads.ini \ && echo "file_uploads = On \n\ max_execution_time = 600 \n\ upload_max_filesize = 200M \n\ post_max_size = 200M" >> /usr/local/etc/php/conf.d/uploads.ini
in nginx-ingress dependencies.yml,i added these 'data' parameters in the configmap and it worked.
kind: ConfigMap apiVersion: v1 metadata: name: nginx-configuration namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx data: proxy-body-size: "200m" client-max-body-size: "200m"
After that, *kubectl apply -f ingress/dependencies.yml*
and i was able to upload more than 2mb.
Try this and see if it works for you
You can execute 'kubectl get pods' to list the pods and then get into a shell using 'kubectl exec -it [POD_NAME] -- /bin/bash'. You can then follow methods mentiond in this link to change the value.
Another option is to create a ConfigMap with your custom configuration similar to this link to increase the size of the upload file size.
Then you need to go to your GKE workloads and in “wordpress-1-wordpress” workload of type “StatefulSet” you need to modify the YAML file where you can add the ConfigMap data to a Volume.
Another workaround is that, you can rebuild the image that you are using in a docker file.
As adviced here, the recommended way is to mount a php config ini file. The most convenient way to expose it is using Kubernetes ConfigMaps. Pls create a new config map:
apiVersion: v1
kind: ConfigMap
metadata:
name: wp-php-config
namespace: default
data:
uploads.ini: |-
file_uploads = On
upload_max_filesize = 256M
post_max_size = 256M
memory_limit = 64M
max_execution_time = 600
And then expose the configMap as a volume in your pod by adding the following config to you're pod spec.template.spec.containers
:
... (wordpress container specs)
volumeMounts:
- mountPath: /usr/local/etc/php/conf.d/uploads.ini
name: php-config
subPath: uploads.ini
(...)
volumes:
- configMap:
defaultMode: 420
name: wp-php-config
name: php-config
You might also need to adjust your ingress max upload limit. Assuming you're using nginx ingress, pls decorate it with an annotation:
nginx.ingress.kubernetes.io/proxy-body-size: 50m
If you want to apply the change to the ingress globally, search for the ingress configMap and add the setting there.