From 63e67081f5c836e92ab90485c6702f7f0315967c Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@biblibre.com>
Date: Thu, 19 Mar 2015 16:54:02 +0100
Subject: [PATCH] Bug 13876: Fallback to /tmp if logdir is not writable
Content-Type: text/plain; charset=utf-8

If the logdir directory is not writable by the koha user, the installer
should not explode.
This patch uses a temporary directory as a fallback.
That means that the history won't be kept.

Test plan:
0/ Generate an update (modify updatedatabase.pl and kohaversion)
1/ Make sure the permission are not correct on $logdir
2/ Go on the interface and execute the update entry.
3/ Confirm that the log has been created in a temporaty directory.

Retry with correct permissions and confirm the log will be created in
$logdir.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Adding a follow-up for completely resolving encountered issues.
---
 installer/install.pl |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/installer/install.pl b/installer/install.pl
index 46f3e3a..63094ab 100755
--- a/installer/install.pl
+++ b/installer/install.pl
@@ -7,6 +7,7 @@ use diagnostics;
 use C4::InstallAuth;
 use CGI qw ( -utf8 );
 use POSIX qw(strftime);
+use File::Temp qw( tempdir );
 
 use C4::Context;
 use C4::Output;
@@ -322,6 +323,9 @@ elsif ( $step && $step == 3 ) {
 
         my $now = POSIX::strftime( "%Y-%m-%dT%H:%M:%S", localtime() );
         my $logdir = C4::Context->config('logdir');
+        unless ( -w $logdir ) {
+            $logdir = tempdir;
+        }
         my ( $logfilepath, $logfilepath_errors ) = ( $logdir . "/updatedatabase_$now.log", $logdir . "/updatedatabase-error_$now.log" );
 
         my $cmd = C4::Context->config("intranetdir") . "/installer/data/$info{dbms}/updatedatabase.pl > $logfilepath 2> $logfilepath_errors";
-- 
1.7.7.6