XAMPP- und Magento -Verzeichniswählerprobleme
-
16-10-2019 - |
Frage
Ok, ich habe ein nerviges Problem. Ich habe einen Code in einem benutzerdefinierten Helfermodul, mit dem ich Bilder ändern und eine zwischengespeicherte Kopie speichere. Das funktioniert nicht. Wenn ich jedoch auf mage.php gehe und die deklarierte Variable ändere DS
aus DIRECTORY_SEPARATOR
zu /
Es funktioniert perfekt. Dann brechen einige Community -Module jedoch, die den Standard verwenden DS
.
Hier ist meine Methode:
public function resizeImg($fileName, $width, $height, $constrain = false, $ratio = false)
{
$folderURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
$imageURL = $folderURL . $fileName;
$basePath = Mage::getBaseDir(Mage_Core_Model_Store::URL_TYPE_MEDIA) . DS . $fileName;
$newPath = Mage::getBaseDir(Mage_Core_Model_Store::URL_TYPE_MEDIA) . DS . "resized" . DS . $width . DS . $fileName;
//if width empty then return original size image's URL
if ($width != '') {
//if image has already resized then just return URL
if (file_exists($basePath) && is_file($basePath)/* && !file_exists($newPath)*/) {
$imageObj = new Varien_Image($basePath);
$imageObj->constrainOnly($constrain);
$imageObj->keepAspectRatio($ratio);
$imageObj->keepFrame(FALSE);
$imageObj->resize($width, $height);
$imageObj->save($newPath);
}
$resizedURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . "resized" . DS . $width . DS . $fileName;
} else {
$resizedURL = $imageURL;
}
return $resizedURL;
}
Und die funktionierende App/mage.php
define('DS', DIRECTORY_SEPARATOR);
Wenn ich nun diese DS in '/' ändere, funktioniert es gut.
Ich habe dann Folgendes ausprobiert:
define('DS2', '/');
Dann ändert sich das DS in meine Methode in DS2, aber dies hat auch nicht funktioniert, noch wechselte es in eine Zeichenfolge oder Variable.
Aus meiner Suche des Verzeichnisauswahls wird durch den Servertyp definiert. Dies sollte ein Linux -Server sein, und dennoch, wenn ich DS selbst verwende, bricht es und versuchte, auszugeben anstelle von /, überall sonst gibt es korrekt aus /.
Zum Teufel mache ich falsch?
Lösung
Sie verwechseln URLs mit Verzeichnissen.
getBaseUrl
ist für URLs, die immer durch getrennt werden /
getBaseDir
ist für Verzeichnisse, die eine Variable haben werden DS
definiert durch die konstante Variable von PHP DIRECTORY_SEPARATOR
- Was Magento verkürzt DS