summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--uwsgi_fix_php83.patch60
2 files changed, 62 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 1ab5c4f..01f0400 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
+clog
package-*.xml
*.tgz
+*.tar.bz2
*.tar.gz
*.tar.xz
*.tar.xz.asc
diff --git a/uwsgi_fix_php83.patch b/uwsgi_fix_php83.patch
new file mode 100644
index 0000000..156921b
--- /dev/null
+++ b/uwsgi_fix_php83.patch
@@ -0,0 +1,60 @@
+From 15df465bcb3a2725209f7ac261c5eeacd90ad672 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Mon, 4 Sep 2023 13:10:52 +0200
+Subject: [PATCH] ini_entries is read-only PHP 8.3
+
+---
+ plugins/php/php_plugin.c | 25 ++++++++++++++++++-------
+ 1 file changed, 18 insertions(+), 7 deletions(-)
+
+diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c
+index b3efa006a..e0ead46ab 100644
+--- a/plugins/php/php_plugin.c
++++ b/plugins/php/php_plugin.c
+@@ -27,6 +27,7 @@ struct uwsgi_php {
+ char *fallback;
+ char *fallback2;
+ char *fallback_qs;
++ char *ini_entries;
+ size_t ini_size;
+ int dump_config;
+ char *server_software;
+@@ -232,21 +233,31 @@ static sapi_module_struct uwsgi_sapi_module;
+
+ void uwsgi_php_append_config(char *filename) {
+ size_t file_size = 0;
+- char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL);
+- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + file_size);
+- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, file_content, file_size);
++ char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL);
++ if (uphp.ini_size) {
++ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + file_size);
++ } else {
++ uphp.ini_entries = malloc(file_size);
++ }
++ memcpy(uphp.ini_entries + uphp.ini_size, file_content, file_size);
+ uphp.ini_size += file_size-1;
+ free(file_content);
++ uwsgi_sapi_module.ini_entries = uphp.ini_entries;
+ }
+
+ void uwsgi_php_set(char *opt) {
+
+- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + strlen(opt)+2);
+- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, opt, strlen(opt));
++ if (uphp.ini_size) {
++ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + strlen(opt)+2);
++ } else {
++ uphp.ini_entries = malloc(strlen(opt)+2);
++ }
++ memcpy(uphp.ini_entries + uphp.ini_size, opt, strlen(opt));
+
+ uphp.ini_size += strlen(opt)+1;
+- uwsgi_sapi_module.ini_entries[uphp.ini_size-1] = '\n';
+- uwsgi_sapi_module.ini_entries[uphp.ini_size] = 0;
++ uphp.ini_entries[uphp.ini_size-1] = '\n';
++ uphp.ini_entries[uphp.ini_size] = 0;
++ uwsgi_sapi_module.ini_entries = uphp.ini_entries;
+ }
+
+ extern ps_module ps_mod_uwsgi;