From 2b2a034ca8f36b3b1d4dc9de8ca5f28bf40a7ca2 Mon Sep 17 00:00:00 2001 From: Salvador Zaragoza Rubio Date: Wed, 30 Mar 2011 17:40:43 +0200 Subject: [PATCH] Bug 6008 - Locating mysql/psql commands on Installer.pm In Installer.pm when is looking for the system command to dump a file into the database it might fail if the web user doesn't have it in its path. So we add before a search with "which" and "whereis" commands, if they fail the command is itself without path. E.g.: with OpenBSD 4.8 the web user "www" doesn't have the path to the installed mysql bin: /usr/local/bin/mysql and fails in the web installer. Signed-off-by: Chris Cormack Seems to work fine, has a good default for if it fails to find that path Signed-off-by: Paul Poulain tested on my linux box, no visible change, worked before, work after. Will hopefully improve behaviour for OpenBSD --- C4/Installer.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) mode change 100644 => 100755 C4/Installer.pm diff --git a/C4/Installer.pm b/C4/Installer.pm old mode 100644 new mode 100755 index a7eb1f6ed6..43fd724bf2 --- a/C4/Installer.pm +++ b/C4/Installer.pm @@ -508,8 +508,13 @@ sub load_sql { my $datadir = C4::Context->config('intranetdir') . "/installer/data/$self->{dbms}"; my $error; my $strcmd; + my $cmd; if ( $self->{dbms} eq 'mysql' ) { - $strcmd = "mysql " + $cmd = qx(which mysql 2>/dev/null || whereis mysql 2>/dev/null); + chomp $cmd; + $cmd = $1 if ($cmd && $cmd =~ /^(.+?)[\r\n]+$/); + $cmd = 'mysql' if (!$cmd || !-x $cmd); + $strcmd = "$cmd " . ( $self->{hostname} ? " -h $self->{hostname} " : "" ) . ( $self->{port} ? " -P $self->{port} " : "" ) . ( $self->{user} ? " -u $self->{user} " : "" ) @@ -517,7 +522,11 @@ sub load_sql { . " $self->{dbname} "; $error = qx($strcmd --default-character-set=utf8 <$filename 2>&1 1>/dev/null); } elsif ( $self->{dbms} eq 'Pg' ) { - $strcmd = "psql " + $cmd = qx(which psql 2>/dev/null || whereis psql 2>/dev/null); + chomp $cmd; + $cmd = $1 if ($cmd && $cmd =~ /^(.+?)[\r\n]+$/); + $cmd = 'psql' if (!$cmd || !-x $cmd); + $strcmd = "$cmd " . ( $self->{hostname} ? " -h $self->{hostname} " : "" ) . ( $self->{port} ? " -p $self->{port} " : "" ) . ( $self->{user} ? " -U $self->{user} " : "" ) -- 2.39.5