Autor Zpráva
Nailen
Profil
Zdravím, rozjíždím jeden script a nedaří se mi nadefinovat absolutní cesty.

mám tento script:

$abs_us_root=$_SERVER['DOCUMENT_ROOT'];

$self_path=explode("/", $_SERVER['PHP_SELF']);
$self_path_length=count($self_path);
$file_found=FALSE;

for($i = 1; $i < $self_path_length; $i++){
    array_splice($self_path, $self_path_length-$i, $i);
    $us_url_root=implode("/",$self_path)."/";

    if (file_exists($abs_us_root.$us_url_root.'z_us_root.php')){
        $file_found=TRUE;
        break;
    }else{
        $file_found=FALSE;
    }
}

ten mi vygeneruje, že v $abs_us_root mám hodnotu /home/www/mojedomena.cz/www
a v $us_url_root mám hodnotu /

Když se to následně zpracuje tímto:

require_once $abs_us_root.$us_url_root.'users/helpers/helpers.php';

Tak dostanu chybové hlášení:

Warning: require_once(/home/www/mojedomena.cz/www/users/helpers/helpers.php): failed to open stream: No such file or directory in /home/www/mojedomena.cz/subdomains/mojesubdomena/users/init.php on line 28

Takže cesta k souboru helpers.php je tato: /home/www/uctenka.eu/www/users/helpers/helpers.php
ale je tam navíc to druhé www a chybí tam adresář pro subdomény a samotná moje subdoména.

Když jsem obě hodnoty naplnil ručně na tyto hodnoty:

$abs_us_root = '/home/www/mojedomena.cz/';
$us_url_root = 'subdomains/mojesubdomena/';

Tak jsem se přes tuto chybu dostal dál. Ale nastává problém u dalších scriptů, kde se volá proměnná $us_url_root

Pak se mi do ní samozřejmě vkládá to co jsem tam nadefinoval a např. pro obrázky se mi generuje tato adresa: mojesubdomena.mojedomena.cz/subdomains/mojesubdomena/users/images/logo.png
kde je navíc právě tento text: /subdomains/mojesubdomena

Jak bych to měl řešit, aby to bylo univerzální a začalo to fungovat?
Předpokládám, že budu muset nějak upravit ten úvodní script, aby všechny ostatní volání mohli být stejné.

Předem díky za radu
Keeehi
Profil
Nailen:
Můžu říct, že ten projekt se mi vůbec nelíbí. Má to na 4 místech prakticky stejný kód na zjištění té samé informace. Odmítám se zabývat tím, který šikula a proč to takhle vytvořil. Nejjednodušší řešení bude to na všech místech natvrdo přepsat na hodnoty co fungují. $_SERVER['DOCUMENT_ROOT'] se v projektu nachází v těchto 4 souborech:
- users/init.php
- users/helpers/deprecated.php
- users/helpers/us_helpers.php
- z_us_root.php

Jinak pole $_SERVER se využívá celkem na 71 místech v 28 souborech. Tak doufej, že ostatní hodnoty v tom poli nebudou dělat problémy.
Nailen
Profil
Tak nakonec to byla jednoduchá úprava. Stačilo obsah proměnné $us_url_root přidat na konec proměnné $abs_us_root a v $us_url_root nechat jen / a vše šlape jak má.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0