Ändra rootmappen i Apache under Xampp

September 16th, 2014 | Posted by admin in How-to - (0 Comments)

När man installerar Xampp på Ubuntu installeras det som standard i mappen /opt och det är bara root användaren som har skrivrättigheter för den mappen. Det gör det omöjligt att spara filer i htdocs-mappen som ligger i /opt och som webbrooten (dit localhost pekar). Det är inte alls bra om man vill hålla på och utveckla webbsidor. Man skulle kunna logga in som root eller ge skrivrättigheter till den mappen från sitt vanliga användarkonto. Men jag tycker bästa lösningen är att ändra rootmappen till en annan mapp som redan har skrivrättigheter. Personligen föredrar jag också att ha rootmappen i min dropbox så kan jag hålla på med utveckling var jag än är utan att alltid behöva commit:a till Github eller Bitbucket i tid och otid för att alltid ha senaste uppdateringen. Men det kan vara nåt att undvika om man jobbar på nåt topphemligt, men då väljer man bara en mapp som inte ligger i ens dropbox. Så här ändrar man rootmappen för Apache:

1. Det går inte att bara öppna httpd.conf filen och redigera den för man har som sagt inte skrivrättigheter. Det jag tycker är enklast är att öppna det enkla grafiska skalet till Xampp och därifrån har man skrivrättigheter till httpd.conf. För att öppna skalet skriver man i terminalen:

cd /opt/lampp

sudo ./manager-linux-x64.run

Skippa -x64 om du inte har den versionen installerad.

2. Nu poppar det grafiska skalet upp. Klicka på knappen Configure. En till ruta poppar upp. Klicka på kanppen Open Conf File. En till ruta poppar upp. Klicka Yes.

3. Nu öppnas httpd.conf filen. Scrolla ner till stycket där det står:

DocumentRoot “/opt/lampp/htdocs”
<Directory “/opt/lampp/htdocs”>

Ändra båda dessa sökvägar till den sökvägen där du vill att rootmappen ska vara. Spara.

4. Om du startar Apache nu och skriver in localhost i webbläsaren kommer du få 403 Access denied-meddelande. Det beror på att den användaren du är inloggad med inte har tillåtelse att ansluta till localhost från den nya sökvägen. Hitta följande stycke i httpd.conf-filen:

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon
</IfModule>

Ändra User daemon till User användarnamn, där användarnamn är det användarnamnet du loggar in i ditt aktuella konto med. Så om ditt användarnamn är 1337haxxor så skriver du User 1337haxxor. Spara.

5. Nu är det klart. Starta/starta om Apache och skriv in localhost i webbläsare så kommer innehållet i den nya sökvägen att laddas. Härifrån den nya sökvägen borde mappen även vara skrivbar från ditt vanliga konto om det ligger i Home-mappen.

Har man Xampp och Codeigniter installer lokalt på sin dator så är det inte helt uppenbart hur man ansluter från Codeigniter till MySQL-databasen.

För det första om Apache lyssnar på port 80 så ligger phpMyAdmin på adressen http://localhost/phpmyadmin. Om den lyssnar på vilken annan port som helst måste man skriva in det portnumret. Alltså: http://localhost:xxxx/phpmyadmin. Vilken port Apache lyssnar på hittar man i httpd.conf-filen.

För det andra måste man anropa sin databas med en användare som har rättigheter att ansluta till den specifika databasen och som har rättigheter att göra allt annat också. Som standard med Xampp kan man ansluta till sin databas utan vare sig användarnamn eller lösenord. Försöker man anropa sin databas utan användarnamn från Codeigniter får man felmeddelandet Unable to select the specified database, eftersom denna användare inte har rätten att göra något med databasen. Anslut istället med användare root och inget lösenord så kommer det att funka. Användare root har rättigheter att göra vad som helst med databasen.

För det tredje, om Apache lyssnar på annan port än port 80 måste man i Codeigniters database.php-fil ange vilken port MySQL lyssnar på. I vanliga fall är detta 3306.

Så här kan det se ut i Codeigniters database.php-fil som exempel:
$db[‘default’][‘hostname’] = ‘localhost:3306’;
$db[‘default’][‘username’] = ‘root’;
$db[‘default’][‘password’] = ”;
$db[‘default’][‘database’] = ‘min_databas’;
$db[‘default’][‘dbdriver’] = ‘mysql’;