OpenCart install folder terug vinden
Ik heb voor OpenCart 1.5.5.1 een extension gemaakt die ik binnenkort (gratis) wil aanbieden op opencart.com
Het enige probleem waar ik nu nog mee zit is het volgende.
Ik heb de locatie nodig van de images map binnen de installatie van OpenCart.
Nu staat deze als een constant in het configuratie bestand maar dit is een pad bekeken vanaf de server root.
Bijvoorbeeld:
Dus vanaf domein root "/opencart/image/"
Maar dit is het geval bij pietjepuk.
Bij hansengrietje kan het wel een andere locatie zijn.
Code (php)
1
define('DIR_IMAGE', '/home/hansengrietje/public_html/shop/webshop1/broodkruimels/image/');
"/shop/webshop1/broodkruimels/image/"
En bij grotebozewolf...
"/image/"
Wat is nu mijn vraag?!
Hoe kan ik, onafhankelijk van waar OpenCart is geinstalleerd, de volledige installatiemap + de "/image/" map uit die constant halen?
Ik wil dus altijd terug krijgen het volgende: "/INSTALLATIEMAP/EVENTUEEL SUBMAP/image"
Iemand met het antwoord?
[vergeten]
Op mijn eigen lamp server is de webroot "public_html" maar ik wil dat dit bij iedereen werkt. Dus ook bij mensen die het gebruiken op een server waar bijvoorbeeld "http_docs", "www", "webroot", of wat dan ook, als webroot staat ingesteld. Dus vanaf "public_html" een strstr() uitvoeren is helaas niet mijn oplossing.
Gewijzigd op 16/05/2013 20:19:23 door Goeny Goegoe
Er is er toch ook vast wel eentje die de root van de installatie aangeeft?
Dat is wat jij hebt .= 'image/'.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// HTTP
define('HTTP_SERVER', 'http://xxx/opencart/');
define('HTTP_ADMIN', 'http://xxx/opencart/admin/');
// HTTPS
define('HTTPS_SERVER', 'http://xxx/opencart/');
// DIR
define('DIR_APPLICATION', '/xxx/xxx/public_html/opencart/catalog/');
define('DIR_SYSTEM', '/xxx/xxx/public_html/opencart/system/');
define('DIR_DATABASE', '/xxx/xxx/public_html/opencart/system/database/');
define('DIR_LANGUAGE', '/xxx/xxx/public_html/public_html/opencart/catalog/language/');
define('DIR_TEMPLATE', '/xxx/xxx/public_html/public_html/opencart/catalog/view/theme/');
define('DIR_CONFIG', '/xxx/xxx/public_html/public_html/opencart/system/config/');
define('DIR_IMAGE', '/xxx/xxx/public_html/public_html/opencart/image/');
define('DIR_CACHE', '/xxx/xxx/public_html/public_html/opencart/system/cache/');
define('DIR_DOWNLOAD', '/xxx/xxx/public_html/public_html/opencart/download/');
define('DIR_LOGS', '/xxx/xxx/public_html/public_html/opencart/system/logs/');
// DATABASE
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', 'xxx');
define('DB_PASSWORD', 'xxx');
define('DB_DATABASE', 'xxx');
define('DB_PREFIX', 'opencart_');
define('HTTP_SERVER', 'http://xxx/opencart/');
define('HTTP_ADMIN', 'http://xxx/opencart/admin/');
// HTTPS
define('HTTPS_SERVER', 'http://xxx/opencart/');
// DIR
define('DIR_APPLICATION', '/xxx/xxx/public_html/opencart/catalog/');
define('DIR_SYSTEM', '/xxx/xxx/public_html/opencart/system/');
define('DIR_DATABASE', '/xxx/xxx/public_html/opencart/system/database/');
define('DIR_LANGUAGE', '/xxx/xxx/public_html/public_html/opencart/catalog/language/');
define('DIR_TEMPLATE', '/xxx/xxx/public_html/public_html/opencart/catalog/view/theme/');
define('DIR_CONFIG', '/xxx/xxx/public_html/public_html/opencart/system/config/');
define('DIR_IMAGE', '/xxx/xxx/public_html/public_html/opencart/image/');
define('DIR_CACHE', '/xxx/xxx/public_html/public_html/opencart/system/cache/');
define('DIR_DOWNLOAD', '/xxx/xxx/public_html/public_html/opencart/download/');
define('DIR_LOGS', '/xxx/xxx/public_html/public_html/opencart/system/logs/');
// DATABASE
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', 'xxx');
define('DB_PASSWORD', 'xxx');
define('DB_DATABASE', 'xxx');
define('DB_PREFIX', 'opencart_');
** Ik heb even mijn home/domeinnaam/ veranderd in xxx zoals je ziet. Evenals DB gegevens.
Ik heb dit al geprobeerd maar helaas niet succesvol:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
// Oudere versies van OpenCart hebben nog de HTTP_IMAGE constante.
if (!defined('HTTP_IMAGE')){
define('HTTP_IMAGE', HTTP_SERVER . 'image/');
}
$verwijder = 'http://' . $_SERVER['HTTP_HOST'];
if (strpos(HTTP_IMAGE, $verwijder) === 0) {
$uploadpad = substr(HTTP_IMAGE, strlen($verwijder));
}
if (!defined('HTTP_IMAGE')){
define('HTTP_IMAGE', HTTP_SERVER . 'image/');
}
$verwijder = 'http://' . $_SERVER['HTTP_HOST'];
if (strpos(HTTP_IMAGE, $verwijder) === 0) {
$uploadpad = substr(HTTP_IMAGE, strlen($verwijder));
}
Gewijzigd op 16/05/2013 20:35:52 door Goeny Goegoe
"Hoe kan ik, onafhankelijk van waar OpenCart is geinstalleerd, de volledige installatiemap + de "/image/" map uit die constant halen?"
Geef eens een duidelijk voorbeeld van wat jij exact wil terugkrijgen?
/shop/shoppingcenter/
Dan wil ik dus terug krijgen: "/shop/shoppingcenter/image/"
Als ik opencart heb geinstalleerd in de root van mijn server dan wil ik terug krijgen: "/image/"
Toevoeging op 16/05/2013 20:49:54:
Je bedoelt toch niet gewoon dit?
Zoals in mijn start post staat, gaat dit om een extension voor opencart welke ik wil gaan aanbieden.
Dus als jantje deze extension download, heeft hij natuurlijk een ander domein + installatie map dan pietje.
Het moet dus altijd goed werken voor iedereen.
Toevoeging op 16/05/2013 20:52:26:
Ozzie PHP op 16/05/2013 20:46:40:
Nee. Want dan krijg je uiteraard ook "/home/gebruiker/webrootfolder/" er nog voor.
En die is uiteraard ook voor iedereen anders.
Toevoeging op 16/05/2013 20:56:05:
Zo dan:
Code (php)
1
2
3
2
3
<?php
define('DIR_IMAGE', str_replace($SERVER['DOCUMENT_ROOT'], '', DIR_SYSTEM . 'image/'));
?>
define('DIR_IMAGE', str_replace($SERVER['DOCUMENT_ROOT'], '', DIR_SYSTEM . 'image/'));
?>
Gewijzigd op 16/05/2013 20:53:57 door Ozzie PHP
Ik krijg met het scriptje wat ik eerder postte:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
// Oudere versies van OpenCart hebben nog de HTTP_IMAGE constante.
if (!defined('HTTP_IMAGE')){
define('HTTP_IMAGE', HTTP_SERVER . 'image/');
}
$verwijder = 'http://' . $_SERVER['HTTP_HOST'];
if (strpos(HTTP_IMAGE, $verwijder) === 0) {
$uploadpad = substr(HTTP_IMAGE, strlen($verwijder));
}
if (!defined('HTTP_IMAGE')){
define('HTTP_IMAGE', HTTP_SERVER . 'image/');
}
$verwijder = 'http://' . $_SERVER['HTTP_HOST'];
if (strpos(HTTP_IMAGE, $verwijder) === 0) {
$uploadpad = substr(HTTP_IMAGE, strlen($verwijder));
}
Wél de goede waarde terug.
Als ik de variabele $uploadpad in een echo weergeef op het scherm, dan staat er precies wat ik wil. Helaas werkt dan het uploaden NIET.
Als ik DIEZELFDE WAARDE handmatig intyp, dán werkt het wél!... (oftewel, een schiet mij maar lek momentje)
Toevoeging op 16/05/2013 21:10:41:
Ozzie PHP op 16/05/2013 20:52:48:
Wacht ff... je wil het gebruiken voor URL's dan? MOmentje...
Toevoeging op 16/05/2013 20:56:05:
Zo dan:
Toevoeging op 16/05/2013 20:56:05:
Zo dan:
Code (php)
1
2
3
2
3
<?php
define('DIR_IMAGE', str_replace($SERVER['DOCUMENT_ROOT'], '', DIR_SYSTEM . 'image/'));
?>
define('DIR_IMAGE', str_replace($SERVER['DOCUMENT_ROOT'], '', DIR_SYSTEM . 'image/'));
?>
Yes!! Dat is 'm... nah ja... bijna dan. ($SERVER moet natuurlijk $_SERVER zijn, en ipv DIR_SYSTEM kan ik natuurlijk net zo goed DIR_IMAGE gebruiken.)
Maar ik heb het aangepast in het script en het lijkt prima te werken!
Nog even testen op een andere server maar ik ga er van uit dat het goed werkt.
Ontzettend bedankt!!!
Toevoeging op 16/05/2013 21:15:17:
Goeny Goegoe op 16/05/2013 20:56:27:
ipv DIR_SYSTEM kan ik natuurlijk net zo goed DIR_IMAGE gebruiken.
Wel even opletten, je kunt niet 2x DIR_IMAGE definen dus dan moet je jouw define anders noemen.
Gewijzigd op 16/05/2013 21:15:41 door Ozzie PHP
En werkt prima. Op eigen server thuis en 2 externe domeinen...
Nogmaals bedankt!
Gewijzigd op 16/05/2013 21:24:06 door Goeny Goegoe
Zo dus: