van wamp naar lamp server

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tortuga web

tortuga web

03/11/2020 12:25:36
Quote Anchor link
Hallo allemaal.
Een maand geleden ben ik overgestapt van windows naar linux mint. Tot nu toe heb ik mijn webdevelopement nog op de oude windowscomputer gedaan, maar nu wil ik dat ook op mijn linux-machine doen en heb LAMP server geinstalleerd.
Alleen krijg ik nu een probleem dat de links in het menu resulteren in een 'not found' page.
Ik heb een htaccess bestand met de rewrite rules:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<IfModule mod_rewrite.c>
# Tell PHP that the mod_rewrite module is ENABLED:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
# The rest of your rewrite rules here:
    RewriteRule ^([^/]+)?$ index.php?page=$1 [QSA,NC,L]
</ifModule>

En ik heb de mod_rewrite in apache geactiveerd.

Op mijn windows comp. werkt dit uitstekend, echter op de linux comp. werkt dit niet.
Andere verschillen zijn:
Windows draait met apache 2.4.35 en PHP 7.2
Linux draait met apache 2.4.41 en PHP 7.4
Iemand enig idee hoe ik de site ook werkend krijg op de linux computer?
 
PHP hulp

PHP hulp

27/01/2021 04:47:55
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 12:28:54
Quote Anchor link
Kan je de geïnstalleerde Apache modules ook in phpinfo() vinden?

(afhankelijk van het type PHP-installatie)

Wat doet dit?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
sudo a2enmod rewrite

Mogelijk daarna nog even Apache restarten.
Gewijzigd op 03/11/2020 12:31:49 door - Ariën -
 
Tortuga web

tortuga web

03/11/2020 12:37:39
Quote Anchor link
Ik krijg een wit scherm. Dus de php-install is niet juist?


Toevoeging op 03/11/2020 12:38:44:

- Ariën - op 03/11/2020 12:28:54:
Wat doet dit?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
sudo a2enmod rewrite

Mogelijk daarna nog even Apache restarten.


enabled
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 12:45:19
Quote Anchor link
Check je error_log van Apache eens?
 
Tortuga web

tortuga web

03/11/2020 12:47:17
Quote Anchor link
waar vind ik die???
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 12:58:53
Quote Anchor link
Ik vermoed in /var/log
Vaak daarin de map /httpd, maar soms ook /Apache2 of iets dergelijks.
Het ligt een beetje aan de distributie en de versie.

Kijk anders eens naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
locate error_log


Linux is erg krachtig, als het om zoeken gaat ;-)
Gewijzigd op 03/11/2020 13:05:53 door - Ariën -
 
Tortuga web

tortuga web

03/11/2020 13:04:08
Quote Anchor link
Gevonden

[Tue Nov 03 11:20:17.597144 2020] [php7:warn] [pid 6096] [client 127.0.0.1:54734] PHP Warning: include(): Failed opening '/content/home.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html

Wat ik zie is dat het pad /usr/share/php aangeroepen wordt. In de usr/share heb ik de folders php7.4-common, php7.4-json, php7.4-mysql, php7.4-opcache, php7.4-readline. Géén enkel php.
Gewijzigd op 03/11/2020 13:13:02 door tortuga web
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 13:11:23
Quote Anchor link
Dat include_path klopt wel. Daar hoef jij je geen zorgen over te maken.
Dat is enkel een map waar hij bepaalde configuratie ook kan zoeken.

In jouw geval zal /content/home.php niet bestaan, of de foute rechten hebben.
 
Tortuga web

tortuga web

03/11/2020 13:23:46
Quote Anchor link
content/home.php bestaat, dat is zeker.
Betreft de rechten???
Ik heb de rechten voor de /var/www map aangepast met $ sudo chown -R username /var/www
Moet ik nog iets meer doen?
Gewijzigd op 03/11/2020 13:24:33 door tortuga web
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 13:40:59
Quote Anchor link
Probeer eens een bestand in dezelfde directory te includeren? Gaat dat wel?
Hebben de bestanden dezelfde owners en chmod-rechten?
 
Tortuga web

tortuga web

03/11/2020 13:59:51
Quote Anchor link
Ja, dat werkt wel.
Maar ik snap nog niet zo goed, waarom de andere niet werkt. Dit is wat ik heb:
In de indexpagina van de site, dus in de root van de site:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
            
            if (!isset($_GET['page'])) {
                //url-variabele bestaat niet, geef beginpagina
                include('content/home.php');
            }

            else {
                //url-variabele bestaat wel, definieer bestand
                $page = 'content/'.$_GET['page'].'.php';
                if (file_exists($page)) {
                    //pagina bestaat, laat zien
                    include($page);
                }

                else {
                    //pagina bestaat niet
                    echo 'De opgevraagde pagina bestaat niet.';
                }
            }

        ?>

In de submap 'content' heb ik de verschillende pagina's aangebracht, dus dat deel van de pagina's dat wijzigt. In de index zijn header, menu en footer als steeds terugkomend gedefinieerd.
Ik zou niet weten hoe het zou kunnen dat owners of chmod-rechten anders zijn.
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 14:05:53
Quote Anchor link
Hoe staat je document_root ingesteld?
 
Tortuga web

tortuga web

03/11/2020 14:18:03
Quote Anchor link
Wat bedoel je precies met document_root?
voor zover ik na kan gaan hebben alle mappen maak en verwijder rechten en alle bestanden lees en schrijfrechten. En alles heeft als eigenaar dezelfde user.
Ik bedoel hiermee alles van de sitemap die onder var/www/html/ is ondergebracht
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 14:22:28
Quote Anchor link
Wat geeft $_SERVER['DOCUMENT_ROOT'] terug ?
Gewijzigd op 03/11/2020 14:22:52 door - Ariën -
 
Tortuga web

tortuga web

03/11/2020 14:32:00
Quote Anchor link
/var/www/html

zou dat niet /var/www/html/websitename moeten zijn?
Gewijzigd op 03/11/2020 14:33:14 door tortuga web
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 14:38:51
Quote Anchor link
Ja. inderdaad. Dat moet je in je VirtualHost van je site even aangeven.
Gewijzigd op 03/11/2020 14:39:04 door - Ariën -
 
Tortuga web

tortuga web

03/11/2020 14:46:42
Quote Anchor link
Ai, ja ik had al wel gelezen over virtual hosts, maar dat was me nog net een brug te ver. Dacht dat ik het wel op dezelfde manier kon doen als dat ik het met windows deed.
Weet je toevallig een goede tutorial over het instellen van virtual hosts in linux mint? Ik ben nog steeds een beginner....
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 14:49:40
Quote Anchor link
Ik doe dat altijd met Googlen ;-)

Als je zoekt op Apache en VirtualHost dan gaat er een wereld voor je open. Het is puur specifiek voor Apache, en niet iets verschillends per OS, los van de instelbare paden dan.

Op die manier kan je dus verschillende hostnames (zoals www.example.org, example2.org, bladiebla.nl), netjes afhandelen, en elke site een eigen DocumentRoot, error_log, SSL-certificaat etc.. geven.
Gewijzigd op 03/11/2020 14:50:50 door - Ariën -
 
Tortuga web

tortuga web

03/11/2020 14:52:06
Quote Anchor link
Oke, ik ga googelen. Mocht ik er niet uitkomen, kom ik er op terug.
In ieder geval, hardstikke bedankt voor de hulp, ben al veel verder weer.
 
- Ariën -
Beheerder

- Ariën -

03/11/2020 15:04:54
Quote Anchor link
Is goed! Succes!
 
Thomas van den Heuvel

Thomas van den Heuvel

03/11/2020 17:06:56
Quote Anchor link
Een aantal punten.

Het is niet nodig om de pagina aan index.php?page=... te fietsen. Dit zou ik afraden, want op die manier "reserveer" je $_GET['page'] voor dit doel. $_GET zou transparant moeten zijn (tenzij je hier echt een speciale reden voor hebt). Alles wat in $_GET zit zou in principe ook in je querystring te zien moeten zijn. Wil je straks een paginering aanbrengen in een of andere lijst, dan kun je hier "page" ook niet meer voor gebruiken. Je kunt de opgevraagde pagina prima bepalen middels $_SERVER['REQUEST_URI'] (de URL van de oorspronkelijke aanroep), hier heb je geen aparte GET variabele voor nodig.

Ook wordt het misschien tijd om te gaan denken aan een autoloader, en dan liefst een die geen gebruik maakt van disk-operaties zoals file_exists() omdat deze relatief duur zijn.

Dan is include(_once)() niet handig gebleken omdat dit compleet onder de radar doorvloog terwijl het bestand niet gevonden werd. Als een bestand niet gevonden wordt die je probeert in te voegen via include(_once) produceert dit enkel een notice en gaat je programma vervolgens vrolijk verder. Maar als het voor de verdere werking van cruciaal belang is dat dit bestand bestaat (wat bijna altijd het geval is als je iets invoegt) dan kun je beter gebruik maken van require(_once) omdat dit bij het ontbreken een foutmelding produceert en verdere uitvoer stopt. En nog beter zou een autoloader zijn die hier in het geheel geen gebruik van maakt.

En tot slot: zet het melden + weergeven van (alle) fouten aan voor ontwikkeling zodat deze direct op je scherm gedumpt worden. Je wilt niet elke keer als je een wit scherm krijgt in je errorlogs gaan graven, dit gaat heel erg snel vervelen. Soms is het niet te vermijden dat je toch een trip moet maken naar je logs, maar als het direct op je scherm weergegeven kan worden verdient dat toch de voorkeur lijkt mij.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.