htaccess Problem

hahni

Active Member
Die Beiträge, die ich gesehen habe, sagen zumindest über andere Control-Panels, dass es Probleme mit der "open_basedir"-Direktive gibt... Könnte da nicht doch was auch bei ISPConfig dran sein?
 

fuxifux

Member
Natürlich, doch die Openbasedir-Direktive ist bei einer Virtualhost-Umgebung wie bei ispconfig von Haus aus aktiv.

Die Lösung für das Problem besteht darin, die Software(in dem Fall Magneto) dazu zu bringen, keine Daten ausserhalb der erlaubten Verzeichnisse(var/www/webXX/...) zu speichern.

Laut diesem Post:
http://www.magentocommerce.com/boards/viewthread/30041/

wird der Pfad in der index.php festgelegt.

Allerdings weiß ich nicht, ob es nicht auch einen 'eleganteren' Weg gibt, als die index.php zu editieren...
 

hahni

Active Member
So sieht die index.php aus:

---
<?php
if (version_compare(phpversion(), '5.2.0', '<')===true) {
echo '<div style="font:12px/1.35em arial, helvetica, sans-serif;"><div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;"><h3 style="margin:0; font-size:1.7em; font-weight:normal; text-transform:none; text-align:left; color:#2f2f2f;">Whoops, it looks like you have an invalid PHP version.</h3></div><p>Magento supports PHP 5.2.0 or newer. <a href="http://www.magentocommerce.com/install" target="">Find out</a> how to install</a> Magento using PHP-CGI as a work-around.</p></div>';
exit;
}

$mageFilename = 'app/Mage.php';

if (!file_exists($mageFilename)) {
if (is_dir('downloader')) {
header("Location: downloader");
} else {
echo $mageFilename." was not found";
}
exit;
}

require_once $mageFilename;

#Varien_Profiler::enable();

#Mage::setIsDeveloperMode(true);

#ini_set('display_errors', 1);

umask(0);
Mage::run();
---
 

hahni

Active Member
Dein Tipp war auf jeden Fall schon mal prüfenswert. Aber in dem von Magento zitierten Thread steht leider auch drin, dass nicht genau beschrieben wurde, was zu tun ist. Und in der index.php ist kein Hinweis auf den Pfad für Temporärdateien... Leider!
 

fuxifux

Member
Kann es sein, das du suPHP verwendest, und in deiner phpinfo() ganz unten KEINE Variable wie: _ENV["TMP"] oder ähnlich vorkommt.

Dann ist das Schuld daran.

Ich hab mir kurz Magento mal angeschaut, die versuchen in der Datei
Code:
magento/app/code/core/Mage/Core/functions.php
(ganz unten) den Temp-Pfad zu finden, dort könnte man auch versuchen z.B. durch:

PHP:
if ( !function_exists('sys_get_temp_dir') ) {
    // Based on http://www.phpit.net/
    // article/creating-zip-tar-archives-dynamically-php/2/
    function sys_get_temp_dir()
    {
        // Try to get from environment variable
        if ( !empty($_ENV['TMP']) ) {
            return realpath( $_ENV['TMP'] );
        }
        else if ( !empty($_ENV['TMPDIR']) ) {
            return realpath( $_ENV['TMPDIR'] );
        }
        else if ( !empty($_ENV['TEMP']) ) {
            return realpath( $_ENV['TEMP'] );
        }

        // Detect by creating a temporary file
        else {
            // Try to use system's temporary directory
            // as random name shouldn't exist
  //          $temp_file = tempnam( md5(uniqid(rand(), TRUE)), '' );
  //          if ( $temp_file ) {
  //              $temp_dir = realpath( dirname($temp_file) );
  //              unlink( $temp_file );
                return "/var/www/webX/phptmp";  //!!!!!
  //          }
  //          else {
  //              return FALSE;
  //          }
        }
    }
}
den tmp-Pfad auf ein erreichbares Verzeichnis zu verbiegen.

EDIT: "Das war es nicht...(die fiunktion betrifft nur PHP vor version 5.2...)
Aber das Problem müsste sein, dass die in PHP vorhandene Funktion "sys_get_temp_dir()" das Verzeichnis /tmp liefert, welches aber nicht beschreibbar ist...



Oder es gibt eine Möglichkeit PHP die Variable TMP weiterzugeben, was aber anscheinend bei suPHP auch nicht so leicht möglich ist...
 
Zuletzt bearbeitet:

hahni

Active Member
Habe einmal probiert, den SafeMode von PHP auszuschalten. Damit lässt sich übrigens nun Magento auch betreiben. Dann kann ich die Original-.htaccess verwenden und muss auch sonst nichts modifizieren.

Aber ist das der bessere Weg als die Datei von Magento anzupassen? Normalerweise ist es doch eher zweckmäßig, mit SafeMode zu fahren, oder?
 

Till

Administrator
Aber ist das der bessere Weg als die Datei von Magento anzupassen? Normalerweise ist es doch eher zweckmäßig, mit SafeMode zu fahren, oder?

Generell sollte man wenn immer möglich safemode verwenden. Leider nehmen da aber einige Software entwickler wenig rücksicht darauf so dass es soaftware gibt die nicht ohne größere Änderungen im safemode laufen.
 

hahni

Active Member
Hallo Till,

da sprichst du mir aus der Seele. Solche Kandidaten sind aber leider meist oft eingesetzte Softwareprodukte wie Gallery2, Magento und osCommerce. Wollte nur mal die Sorgenkinder nennen, mit denen man auch im ISPConfig-Umfeld so konfrontiert ist. Achja: Joomla! ist das gleiche Sorgenkind. Und ich dachte, Magento wäre da anders. Dass es "/tmp" vollmüllt, bedeutet aber trotzdem, dass dies von der Quota des Users abgezogen wird?

Viele Grüße

Hahni
 

fuxifux

Member
Ein workaround wäre auch, den PHP-Wrapper von ISP-Config zu ändern:
(muss vermutlich aber nach einem ISP-Config-Update wiederhergestellt werden...)
Ort:
/home/admispconfig/ispconfig/tools/suphp/usr/bin/php-wrapper

Code:
exec php-cgi -d open_basedir=/tmp:${BASEDIR} -d upload_tmp_dir=${TMPDIR} -d session.save_path=${SESSDIR} -d safe_mode=${SAFE_MODE}
statt:
Code:
exec php-cgi -d open_basedir=${BASEDIR} -d upload_tmp_dir=${TMPDIR} -d session.save_path=${SESSDIR} -d safe_mode=${SAFE_MODE}
Erlaubt den Zugriff auf /tmp ohne den Safe mode zu deaktivieren...
 

hahni

Active Member
Hallo Fuxifux,

vielen Dank erstmal, dass du immer so schön auf der Suche nach optimalen Lösungen für mich bist.

Die Idee mit ISPConfig finde ich nicht so gut, weil:
Ich muss schon jetzt immer nach jedem Update den Pfad von "clamdscan" nachträglich setzen. Wenn ich das jetzt auch noch für die Webs machen muss, dann ufert das aus.

Evtl. gibt es ja eine Ausnahme-Konfiguration (als separate Datei), wo man solche Änderungen ablegen kann und die dann nachträglich von ISPConfig berücksichtigt werden.

Zumindest wäre dies doch mal eine von Till zu prüfende Idee. Aber sicher hast du gleiche Probleme, sonst hättest du das mit dem Update nicht auch erwähnt.

Viele Grüße von

Hahni
 

hunter999

New Member
Hallo hahni,

Probiers mal hiermit auf der Console im Folder des Webs wo magento liegt:

Code:
find ./ -type d -exec chmod 755 {} \; && find ./ -type f -exec chmod 644 {} \;
 

hahni

Active Member
Habe alle Dateien im Magento-Ordner (incl. Verzeichnisse) auf 0755 gesetzt. Eigentlich bereitet mir das Bauchschmerzen, doch laut Anleitung von Magento ist dies genau dann erforderlich, wenn man die Web-Version von Magento-Connect verwenden möchte. Dennoch erhalte ich eine Fehlermeldung:

---
Error: Please check for sufficient write file permissions

Your Magento folder does not have sufficient write permissions, which this web based downloader requires.
If you wish to proceed downloading Magento packages online, please set all Magento folders to have writable permission for the web server user (example: apache) and press the "Refresh" button to try again.
---


Das Teil arbeitet glaub ich mit Pear. Leider kenne ich mich damit nicht aus und weiss nicht, ob das bei Ubuntu 8.04 LTS schon mit dabei ist oder extra für Magento installiert werden muss. Oder ist dies ein systemweites Programmpaket? Wenn ja (und falls es für Magento wirklich benötigt wird): wie installiert man es?

Achja: wenn man mal vom Extension-Manager absieht, läuft Magento auch. Das Skript "magento-check.php" direkt vom Anbieter bescheinigt auch, dass angeblich alle Komponenten vorhanden sind. Doch woran könnte es jetzt noch liegen, dass ausgerechnet Magento-Connect nicht funktioniert:

---
Congratulations! Your server meets the requirements for Magento.

  • You have PHP 5.2.0 (or greater)
  • Safe Mode is off
  • You have MySQL 4.1.20 (or greater)
  • You have the curl extension
  • You have the dom extension
  • You have the gd extension
  • You have the hash extension
  • You have the iconv extension
  • You have the mcrypt extension
  • You have the pcre extension
  • You have the pdo extension
  • You have the pdo_mysql extension
  • You have the simplexml extension
 
Zuletzt bearbeitet:

Till

Administrator
Stez doch bitte mal den web Folder selbst auch auf 777. oder aber Du nutzt suphp, dann ist das alles nicht nötig da php dann unter dem User des Webs läuft.
 

hahni

Active Member
Hallo zusammen,

Magento läuft nun wie ein geölter Blitz und auch Magento-Connect lässt sich betreiben. Was ich nicht ausgetestet habe (aber heute dem Kunden aufgefallen ist): die Statistiken funktionieren nicht mehr.

Beim Auftruf der URL kann man noch seinen Benutzernamen und sein Kennwort angeben. Dann aber folgt eine Fehlerseite (obwohl die Statistik-HTML-Seiten und -Bilder im Ordner "stats" liegen (und dem Benutzer gehören):

---
[FONT=Helvetica, Arial]Fehler 403 - Verboten![/FONT]


[FONT=Helvetica, Arial]Folgender Fehler ist aufgetreten:[/FONT]
[FONT=Helvetica, Arial]Sie besitzen nicht die erforderlichen Rechte, die angegebene URL zu öffnen. [/FONT][FONT=Helvetica, Arial]Bei weiteren Problemen wenden Sie sich bitte an den Webmaster.[/FONT]

[FONT=Verdana, Arial]powered by ISPConfig[/FONT]
---

Woran könnte dies liegen?

Viele Grüße

Hahni
 

hahni

Active Member
Gerne:

---
[Sun Jun 14 22:09:23 2009] [error] [client 217.17.223.181] Directory index forbidden by Options directive: /var/www/web999/web/stats/
---

Wenn ich incl. "index.html" aufrufe, geht es (logischerweise)...
 

hahni

Active Member
Wieder ein Kunde, bei dem das so ist. Ich hatte das bei einem anderen Kunden schon mal hinbekommen. Ich habe zudem gerade die .htaccess gecheckt. Da hatten wir damals keine Sonderregel für Magento und /stats hinterlegt... :(
 

Werbung

Top