From 9f3e47e4c741c53c94f328fca626aabb41877a621d5577b50bd00827175b96e8 Mon Sep 17 00:00:00 2001 From: Eric Schirra Date: Wed, 22 Jan 2020 19:44:52 +0000 Subject: [PATCH] Accepting request 766403 from home:computersalat:devel:php fix for boo#1092345, change ap_docroot from /srv/www/htdocs to /usr/share OBS-URL: https://build.opensuse.org/request/show/766403 OBS-URL: https://build.opensuse.org/package/show/server:php:applications/phpMyAdmin?expand=0&rev=345 --- phpMyAdmin.changes | 15 ++++++++++++++ phpMyAdmin.http | 29 +++++++++++++++++++++++++++ phpMyAdmin.spec | 49 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/phpMyAdmin.changes b/phpMyAdmin.changes index b02e21b..db82450 100644 --- a/phpMyAdmin.changes +++ b/phpMyAdmin.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Tue Jan 21 21:24:30 UTC 2020 - chris@computersalat.de + +- fix for boo#1092345 + * change ap_docroot from /srv/www/htdocs to /usr/share + work is based on changes provided by ecsos@opensuse.org + if phpMyAdmin.conf for apache was changed by local admin, we will + create a backup and replace the original file with the new version + sorry admins, but you need to apply your changes again + * needed Alias /phpMyAdmin is an enabled APACHE_SERVER_FLAGS default + for more info have a look into /etc/apache2/conf.d/phpMyAdmin.conf +- cleanup tmp/twig on + * uninstall + * ap_docroot change + ------------------------------------------------------------------- Wed Jan 8 14:26:20 UTC 2020 - chris@computersalat.de diff --git a/phpMyAdmin.http b/phpMyAdmin.http index 1ff610b..81d4991 100644 --- a/phpMyAdmin.http +++ b/phpMyAdmin.http @@ -1,8 +1,37 @@ +# By default the /@name@ Alias is enabled for all vhosts. +# To disable the /@name@ Alias, run +# a2enflag -d @name@ && rcapache2 restart +# This will make /@name@ unavailable on any vhosts. +# +# If you want to have the /@name@ Alias only on a specific +# vhost, add the Alias to the config of that vhost. + + + + Alias /@name@ @ap_docroot@/@name@ + + + Options FollowSymLinks AllowOverride None + + Order Allow,Deny + Allow from all + + + = 2.4> + + Require all granted + + + Order Allow,Deny + Allow from all + + + Include @ap_sysconfdir@/conf.d/@name@.inc php_admin_value open_basedir "@ap_docroot@/@name@:/var/lib/php5:/tmp:@docdir@/@name@:/etc/@name@:/proc/meminfo:/proc/stat" diff --git a/phpMyAdmin.spec b/phpMyAdmin.spec index fbe425b..f3ef1ae 100644 --- a/phpMyAdmin.spec +++ b/phpMyAdmin.spec @@ -19,7 +19,8 @@ %define apxs %{_sbindir}/apxs2 %define ap_sysconfdir %(%{apxs} -q SYSCONFDIR) %define ap_serverroot %(%{apxs} -q PREFIX) -%define ap_docroot %(%{apxs} -q PREFIX)/htdocs +%define ap_docroot_old %{ap_serverroot}/htdocs +%define ap_docroot %{_datadir} %define pma_config %{_sysconfdir}/%{name}/config.inc.php %if 0%{?suse_version} %define ap_usr wwwrun @@ -164,6 +165,20 @@ sed -i -e "s,@ap_docroot@,%{ap_docroot},g" -e "s,@name@,%{name},g" \ %fdupes %{buildroot}%{ap_docroot}/%{name}/libraries %fdupes %{buildroot}%{ap_docroot}/%{name}/themes +%pre +# removing tmp/twig before ap_docroot change +# a new one will be created anyway in new ap_docroot (like after a clean install) +if [ -d "%{ap_docroot_old}/%{name}/tmp" ]; then + echo "removing %{ap_docroot_old}/%{name}/tmp for ap_docroot change" + rm -rf "%{ap_docroot_old}/%{name}/tmp" || : +fi + +%preun +if [ $1 -eq 0 ]; then + echo "removing %{ap_docroot}/%{name}/tmp for clean uninstall" + rm -rf "%{ap_docroot}/%{name}/tmp" || : +fi + %post # on `rpm -ivh` PARAM is 1 # on `rpm -Uvh` PARAM is 2 @@ -174,14 +189,44 @@ sed -i -e "s,@FQDN@,$(cat %{_sysconfdir}/HOSTNAME)," \ if [ -x %{_sbindir}/a2enmod ]; then a2enmod -q version || a2enmod version # get installed php_version (5 or 7) + # ap_mpm=$(awk '/Server MPM/ {print $3}' <<<$(start_apache2 -V)) + # php_version=$(awk -F[." "] '/cli/ {print $2}' <<< $(php -v)) php_version=$(php -v | sed -n 's/^PHP\ \([[:digit:]]\+\)\..*$/\1/p') if [[ -n ${php_version} ]] && start_apache2 -V | grep -q prefork; then a2enmod -q "php${php_version}" || a2enmod "php${php_version}" fi fi +# enable phpMyAdmin flag +if [ -x %{_sbindir}/a2enflag ]; then + flag_find=$(grep -cw /etc/sysconfig/apache2 -e "^APACHE_SERVER_FLAGS=.*%{name}.*") + if [ $flag_find -eq 0 ]; then + a2enflag %{name} + fi +fi +# We changed ap_docroot from %{ap_docroot_old} to %{ap_docroot} (/srv/www/htdocs to /usr/share) +# If someone did 'manually' change the config file it won't be replaced by rpm +# Hence we backup the existing and place the new one +find=0 +find=$(grep -cw %{ap_sysconfdir}/conf.d/%{name}.conf -e "%{ap_docroot_old}/%{name}") || : +if [ $find -gt 0 ]; then +ap_date="$(date '+%Y%m%d-%H%M')" +echo "creating backup of %{ap_sysconfdir}/conf.d/%{name}.conf to %{ap_sysconfdir}/conf.d/%{name}.conf.backup-${ap_date}" +cp -a %{ap_sysconfdir}/conf.d/%{name}.conf %{ap_sysconfdir}/conf.d/%{name}.conf.backup-${ap_date} +echo "copying %{ap_sysconfdir}/conf.d/%{name}.conf.rpmnew to %{ap_sysconfdir}/conf.d/%{name}.conf" +cp -a %{ap_sysconfdir}/conf.d/%{name}.conf.rpmnew %{ap_sysconfdir}/conf.d/%{name}.conf +fi +%restart_on_update apache2 #systemctl try-restart apache2 &>/dev/null -#%%postun +%postun +# disable phpMyAdmin flag +if [ -x %{_sbindir}/a2enflag ]; then + flag_find=$(grep -cw /etc/sysconfig/apache2 -e "^APACHE_SERVER_FLAGS=.*%{name}.*") + if [ $flag_find -eq 1 ]; then + a2enflag -d %{name} + fi +fi +%restart_on_update apache2 #systemctl try-restart apache2 &>/dev/null %files -f FILELIST