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:

<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?
Kan je de geïnstalleerde Apache modules ook in phpinfo() vinden?

(afhankelijk van het type PHP-installatie)

Wat doet dit?

sudo a2enmod rewrite

Mogelijk daarna nog even Apache restarten.
Ik krijg een wit scherm. Dus de php-install is niet juist?


[size=xsmall]Toevoeging op 03/11/2020 12:38:44:[/size]

- Ariën - op 03/11/2020 12:28:54

Wat doet dit?

sudo a2enmod rewrite

Mogelijk daarna nog even Apache restarten.


enabled
Check je error_log van Apache eens?
waar vind ik die???
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

locate error_log


Linux is erg krachtig, als het om zoeken gaat ;-)
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.


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.
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?
Probeer eens een bestand in dezelfde directory te includeren? Gaat dat wel?
Hebben de bestanden dezelfde owners en chmod-rechten?
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:

<?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.

Reageren