Warum wird eine PHP-Include-Datei nicht über einen Symlink in Linux Apache gefunden?

408
David Spector

In /home/richard/public_html/tinytest.php:

<?php // Note: reuse is a symlink to /home/r/reuse require("reuse/Test.php"); ?> 

Die Wiederverwendung von symlink / home / richard / public_html / wurde folgendermaßen vorgenommen:

<?php $User="richard"; $R=symlink("/home/r/reuse","/home/$User/public_html/reuse"); ?> 

Ich habe die PHP-Fehlerberichterstattung in .htaccess aktiviert und die folgenden Fehler von tinytest.php erhalten:

Warning: require(reuse/Test.php): failed to open stream: No such file or directory in /home/richard/public_html/tinytest.php on line 3  Warning: require(reuse/Test.php): failed to open stream: No such file or directory in /home/richard/public_html/tinytest.php on line 3  Fatal error: require(): Failed opening required 'reuse/Test.php' (include_path='/home/r') in /home/richard/public_html/tinytest.php on line 3 

Ich habe auch versucht, die Adresse des Browsers zu testen https://example.com/reuse/Test.phpund diese Fehlermeldung zu erhalten:

Forbidden  You don't have permission to access /reuse/Test.php on this server. 

/home/r/reuse/Test.php enthält:

This is Test.php in reuse 

Ich habe mir die Berechtigungen aller relevanten Dateien angesehen und sie waren rw-r - r-- oder besser.

Der Besitzer der meisten Dateien war "richard". Die Besitzer von / und / home waren "root".

Motivation: / home / r / reuse ist ein Verzeichnis gängiger PHP-Include-Dateien, die von mehreren meiner Websites verwendet werden. Ich habe es in / home gestellt, da dies die gemeinsame Wurzel aller virtuellen Hosts auf dem Linux-Produktionsserver ist.

0

0 Antworten auf die Frage