Det jag syftar på är sökvägen. När man skriver /css/ så går den ju till roten och letar efter css-mappen. Men varför kan man inte göra samma sak när det gäller php? Funkar det inte för att den går för långt bak i kataloghanteringen? Hade vart smidigt att använda sig av /mapp/fil.php i stället för att behöva skriva ../mapp/fil.php och ännu jobbigare om den ligger djupt: ../../mapp/fil.php
Det gör det väl visst?
Frågan är vad det är som du räknar som root? På en windowsburk är "/" ex. C: eller D: och på en *nix-burk så är / just / (dvs inte /usr/silfver/public_html)
PHP använder färdiga sökvägar där den ska leta efter inkluderings-filer. Du kan ändra din 'include_path' så att den söker i mappen ovanför också, genom att slänga in ett ';..' i slutet, eller alternativt ':..' om du kör Linux/UNIX.
Typ:
Det gör det väl visst?
Frågan är vad det är som du räknar som root? På en windowsburk är "/" ex. C: eller D: och på en *nix-burk så är / just / (dvs inte /usr/silfver/public_html)
Så här ser det ut när jag försöker:
Warning: main(): Unable to access /includes/top.php in /mnt/home/silfver/www.silfver.se/test/test.php on line 2
Warning: main(/includes/top.php): failed to open stream: No such file or directory in /mnt/home/silfver/www.silfver.se/test/test.php on line 2
Fatal error: main(): Failed opening required '/includes/top.php' (include_path='.:/usr/local/lib/php') in /mnt/home/silfver/www.silfver.se/test/test.php on line 2
Därför att den första går från "webrooten" men include() och require() går från filsystemets root.
Detta innebär att om dina sidor ligger i /www/domain.se/htdocs så kommer den första att hämta /www/domain/htdocs/css/index.css medans den andra hämtar /includes/top.php
För att få det enklare så brukar jag skriva så här när jag kör include() eller require():
I mitt exempel så sätter jag om variabeln 'include_path' i php.ini att peka på katalogen ovanför. Det är alltså inte så att filen inkluderas med den kodraden, du måste fortfarande använda require() för att inkludera filen.
Nu kommer alltså PHP söka efter filen 'dinfil.php' i aktuell katalog, katalogen ovanför samt i katalogen \php\includes.
Du kan även ändra direkt i php.ini istället för att i varje PHP-dokument ange ett ini_set-anrop, genom att öppna filen i valfri texteditor och ändra raden med 'ini_set' till önskade kataloger.
GunnarD's exempel är ett alternativ om du orkar skriva så mycket varje gång du ska inkludera något.
I mitt exempel så sätter jag om variabeln 'include_path' i php.ini att peka på katalogen ovanför. Det är alltså inte så att filen inkluderas med den kodraden, du måste fortfarande använda require() för att inkludera filen.
Nu kommer alltså PHP söka efter filen 'dinfil.php' i aktuell katalog, katalogen ovanför samt i katalogen \php\includes.
Du kan även ändra direkt i php.ini istället för att i varje PHP-dokument ange ett ini_set-anrop, genom att öppna filen i valfri texteditor och ändra raden med 'ini_set' till önskade kataloger.
GunnarD's exempel är ett alternativ om du orkar skriva så mycket varje gång du ska inkludera något.
Jag har ju inte en egen server, så jag kan inte ändra i php.ini. Men din kod kanske funkar ändå? Men eftersom jag knappt förstår mig på php så kör jag på gunnars exempel. Lätt och bra.
272 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91