Synology-Forum.nl
Overige software => Web Station => Topic gestart door: mistervink op 04 september 2017, 18:09:38
-
Hi there :)
kan iemand mij helpen de volgende vraag te beantwoorden:
bij gebruik van de "include" functie met PHP,
zou de "/" ervoor moeten zorgen dat er vanaf de root begonnen moet aan de structuur.
Standaard is ingesteld dat de root "/var/services/web" is. (echo $_SERVER["DOCUMENT_ROOT"])
Nu wil ik graag, dat per gebruiker, de root, de www map van de gebruiker is.
Maar waar of hoe kan ik dat instellen?
Alvast bedankt!
-
Is dat niet ~/ in Linux ?
of iets van ~/web in dit geval
-
Om de www map in de Home directory van een gebruiker als root te gebruiken doe ik het volgende.
1. Schakel personal webserver uit. Dus geen http://domain/~gebruiker mogelijk.
2. Maak in de web map een map aan met de gebruikersnaam.
3. Maak een virtual host aan voor die gebruiker en kies de map die in 2 is aangemaakt. Bijvoorbeeld gebruiker.domein.nl
4. Wis de map die in 2 is aangemaakt.
5. Maak een symbolic link aan naar de www map van de gebruiker en geef het de naam van de map die je in 2 hebt aangemaakt, in 3 hebt gekozen en in 4 hebt gewist.
ln -s /volume1/homes/gebruikersnaam/www/ gebruiker
6. Nu kan je als url http://gebruiker.domein.nl gebruiken.
7. De www map is nu de root van de url in 6.
-
Hier een zooi code om zo'n beetje alle php variabelen te bekijken. Plak het in een php bestand.
<style>
code {color: red;}
</style>
<?php
echo "Hostname (n) : <code>" . @php_uname(n) . "</code><br />\n";
if (function_exists( 'shell_exec' )) {
echo "Hostname : <code>" . @gethostbyname(trim(`hostname`)) . "</code><br />\n";
}
else {
echo "Server IP : <code>". $_SERVER['SERVER_ADDR'] . "</code><br />\n";
}
echo "Platform (s) : <code>" . @php_uname(s) . "</code>, (r) : <code>" . @php_uname(r) . "</code>, (v) : <code>" . @php_uname(v) . "</code><br />\n";
echo "Architecture (m) : <code>" . @php_uname(m) . "</code><br />\n";
echo "Username : <code>" . get_current_user () . "</code> ( UiD: <code>" . getmyuid() . "</code>, GiD: <code>" . getmygid() . "</code> )<br />\n";
echo "Curent Path (getcwd) : <code>" . getcwd () . "</code><br />\n";
echo "--FILE-- : <code>" . __FILE__ . "</code><br />\n";
echo "dirname FILE : <code>" . dirname(__FILE__) . "</code><br />\n";
echo "basename FILE : <code>" . basename(__FILE__) . "</code><br />\n";
echo "dirname SCRIPT_NAME : <code>" . dirname($_SERVER["SCRIPT_NAME"]) . "</code><br />\n";
echo "basename SCRIPT_NAME : <code>" . basename($_SERVER["SCRIPT_NAME"]) . "</code><br />\n";
echo "<hr>";
$path_parts = pathinfo(__FILE__);
echo '$path_parts = <code>pathinfo(__FILE__)</code><br />' . "\n";
echo '$path_parts[' . "'dirname']'" . "<br />\n";
echo "dirname : <code>" . $path_parts['dirname'], "</code><br />\n";
echo "basename : <code>" . $path_parts['basename'], "</code><br />\n";
echo "extension : <code>" . $path_parts['extension'], "</code><br />\n";
echo "filename : <code>" . $path_parts['filename'], "</code><br />\n"; // since PHP 5.2.0
echo "<hr>";
echo '<p>All names have prefix <b>$_SERVER["name"]</b></p>';
echo "USER " . " : <code>" . $_SERVER["USER"] . "</code><br />\n";
echo "HOME " . " : <code>" . $_SERVER["HOME"] . "</code><br />\n";
echo "FCGI_ROLE " . " : <code>" . $_SERVER["FCGI_ROLE"] . "</code><br />\n";
echo "REDIRECT_MOD_X_SENDFILE_ENABLED" . " : <code>" . $_SERVER["REDIRECT_MOD_X_SENDFILE_ENABLED"] . "</code><br />\n";
echo "REDIRECT_HANDLER " . " : <code>" . $_SERVER["REDIRECT_HANDLER"] . "</code><br />\n";
echo "REDIRECT_STATUS " . " : <code>" . $_SERVER["REDIRECT_STATUS"] . "</code><br />\n";
echo "MOD_X_SENDFILE_ENABLED " . " : <code>" . $_SERVER["MOD_X_SENDFILE_ENABLED"] . "</code><br />\n";
echo "HTTP_HOST " . " : <code>" . $_SERVER["HTTP_HOST"] . "</code><br />\n";
echo "HTTP_USER_AGENT " . " : <code>" . $_SERVER["HTTP_USER_AGENT"] . "</code><br />\n";
echo "HTTP_ACCEPT " . " : <code>" . $_SERVER["HTTP_ACCEPT"] . "</code><br />\n";
echo "HTTP_ACCEPT_LANGUAGE " . " : <code>" . $_SERVER["HTTP_ACCEPT_LANGUAGE"] . "</code><br />\n";
echo "HTTP_ACCEPT_ENCODING " . " : <code>" . $_SERVER["HTTP_ACCEPT_ENCODING"] . "</code><br />\n";
echo "HTTP_CONNECTION " . " : <code>" . $_SERVER["HTTP_CONNECTION"] . "</code><br />\n";
echo "PATH " . " : <code>" . $_SERVER["PATH"] . "</code><br />\n";
echo "SERVER_SIGNATURE " . " : <code>" . $_SERVER["SERVER_SIGNATURE"] . "</code><br />\n";
echo "SERVER_SOFTWARE " . " : <code>" . $_SERVER["SERVER_SOFTWARE"] . "</code><br />\n";
echo "SERVER_NAME " . " : <code>" . $_SERVER["SERVER_NAME"] . "</code><br />\n";
$ip_server = $_SERVER["SERVER_ADDR"];
if (!filter_var($ip_server, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
$ip_server_echo = "is a valid IPv6 address";
} elseif (!filter_var($ip_server, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) {
$ip_server_echo = "is a valid IPv4 address";
}
echo "SERVER_ADDR " . " : <code>" . $_SERVER["SERVER_ADDR"] . "</code> $ip_server_echo<br />\n";
echo "SERVER_PORT " . " : <code>" . $_SERVER["SERVER_PORT"] . "</code><br />\n";
$ip_remote = $_SERVER["REMOTE_ADDR"];
if (!filter_var($ip_remote, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
$ip_remote_echo = "is a valid IPv6 address";
} elseif (!filter_var($ip_remote, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) {
$ip_remote_echo = "is a valid IPv4 address";
}
echo "REMOTE_ADDR " . " : <code>" . $_SERVER["REMOTE_ADDR"] . "</code> $ip_remote_echo<br />\n";
echo "DOCUMENT_ROOT " . " : <code>" . $_SERVER["DOCUMENT_ROOT"] . "</code><br />\n";
echo "SERVER_ADMIN " . " : <code>" . $_SERVER["SERVER_ADMIN"] . "</code><br />\n";
echo "SCRIPT_FILENAME " . " : <code>" . $_SERVER["SCRIPT_FILENAME"] . "</code><br />\n";
echo "REMOTE_PORT " . " : <code>" . $_SERVER["REMOTE_PORT"] . "</code><br />\n";
echo "REDIRECT_URL " . " : <code>" . $_SERVER["REDIRECT_URL"] . "</code><br />\n";
echo "GATEWAY_INTERFACE " . " : <code>" . $_SERVER["GATEWAY_INTERFACE"] . "</code><br />\n";
echo "SERVER_PROTOCOL " . " : <code>" . $_SERVER["SERVER_PROTOCOL"] . "</code><br />\n";
echo "REQUEST_METHOD " . " : <code>" . $_SERVER["REQUEST_METHOD"] . "</code><br />\n";
echo "QUERY_STRING " . " : <code>" . $_SERVER["QUERY_STRING"] . "</code><br />\n";
echo "REQUEST_URI " . " : <code>" . $_SERVER["REQUEST_URI"] . "</code><br />\n";
echo "SCRIPT_NAME " . " : <code>" . $_SERVER["SCRIPT_NAME"] . "</code><br />\n";
echo "ORIG_SCRIPT_FILENAME " . " : <code>" . $_SERVER["ORIG_SCRIPT_FILENAME"] . "</code><br />\n";
echo "ORIG_PATH_INFO " . " : <code>" . $_SERVER["ORIG_PATH_INFO"] . "</code><br />\n";
echo "ORIG_PATH_TRANSLATED " . " : <code>" . $_SERVER["ORIG_PATH_TRANSLATED"] . "</code><br />\n";
echo "ORIG_SCRIPT_NAME " . " : <code>" . $_SERVER["ORIG_SCRIPT_NAME"] . "</code><br />\n";
echo "PHP_SELF " . " : <code>" . $_SERVER["PHP_SELF"] . "</code><br />\n";
echo "REQUEST_TIME_FLOAT " . " : <code>" . $_SERVER["REQUEST_TIME_FLOAT"] . "</code><br />\n";
echo "REQUEST_TIME " . " : <code>" . $_SERVER["REQUEST_TIME"] . "</code><br />\n";
?>
-
Beste Wyodor,
allereerst erg bedankt voor je reactie :)
ik heb je instructie stap voor stap uitgevoerd,
ik krijg helaas een error 404.
1. Schakel personal webserver uit. Dus geen http://domain/~gebruiker mogelijk.
- check
2. Maak in de web map een map aan met de gebruikersnaam.
- check, map genaamd "test"
3. Maak een virtual host aan voor die gebruiker en kies de map die in 2 is aangemaakt.
- check, naamgebaseerd, test.mistervink.synology.me, documenthoofdmap: "web/test",
poort: 80 / 443, back-end: Nginx, PHP 7.0
4. Wis de map die in 2 is aangemaakt.
- check, "web/test" verwijderd
5. Maak een symbolic link aan naar de www map van de gebruiker en geef het de naam van de map die je in 2 hebt aangemaakt, in 3 hebt gekozen en in 4 hebt gewist.
- check, ln -s /volume2/homes/test/www test
6. Nu kan je als url http://gebruiker.domein.nl gebruiken.
check, test.mistervink.synology.me
- in de map homes/test/www een index.php aangemaakt <?php echo "Hallo!";
- resultaat: error 404
(- de documenthoofdmap van de virtuele host is nu leeg, gezien die map is verwijderd..)
enig idee waar ik iets verkeerd doe?
-
ow,
vergeet bij stap 5 de laatste /
commando was:
ln -s /volume2/homes/test/www/ test
-
Hi there :)
okay, de symbolic link werkt nu.
maar...
ik krijg de volgende melding:
Warning: include(/test/test.php): failed to open stream: No such file or directory in /volume2/homes/mistervink/www/index.php
index.php
<?php
include '/test/test.php';
test/test.php
<?php
echo "test";
ik kan wel zien dat de $_SERVER["DOCUMENT_ROOT"] is veranderd van
/var/services/web
naar
/volume2/web/mistervink
iemand een idee?
-
Om vanuit de www map van mistervink een bestand uit de www map van test te gebruiken, moet je het hele path naar test.php gebruiken :
/volume2/web/test/test.php
Of als er geen symbolic link is in de web map :
/volume2/homes/test/www/test.php
-
hey Wyodor,
bedankt voor je reactie :)
deze werkt inderdaad wel:
include '/volume2/homes/mistervink/www/test/test.php';
ik ben nu dus op zoek om het volgende te laten werken:
include '/test/test.php';
mocht ik dan ooit een site willen verplaatsen of ergens anders hosten,
dan hoef ik niet alle "includes" en "requires" aan te passen.
is dat mogelijk?
-
Ik ging ervan uit dat met /test/test.php de www map van gebruiker test werd bedoeld.
Als /test/test.php in de www map van mistervink zit, gebruik dan dit :
<?php
include( $_SERVER['DOCUMENT_ROOT'] . '/test/test.php' );
?>
-
Hey Wyodor,
wederom bedankt voor je tijd en reactie :)
waardeer ik enorm!
Ik was een beetje aan het wisselen en uitproberen tussen de mappen "test" en "mistervink",
(uiteindelijk zou dit niet moeten uitmaken voor wat ik voor elkaar wil krijgen).
Je antwoorden werken allemaal wel, supergoed en dank je wel!
Als ik het dus goed begrijp,
het is dus niet mogelijk om alleen
include '/test/test.php';
te gebruiken,
we blijven dus altijd afhankelijk van de $_SERVER["DOCUMENT_ROOT"].