Frage

Ich betreibe mehrere PHP-Anwendungen auf meinem Mac, OS X 10.5.6, Apache 2, PHP 5. Ich habe Subdomains Setup für jedes Projekt eine Host-Dateieinträge für jede Sub-Domain und Virtual Directory Blöcke in der Apache-Konfigurations . So

project1.localhost geht an / Library / WebServer / Documents / Project1
project2.localhost geht an / Library / WebServer / Documents / Project2
etc ...

Allerdings ist diese Methode nicht wirklich „isolieren“, um die Web-Anwendungen. Zum Beispiel, wenn ich schließe ein Skript wie folgt:

<?php
include("/includes/include.php");
?>

Es verweist auf das Skript aus dem Basisverzeichnis von meinem Computer. So greift sie
C: /includes/include.php

Gibt es eine Möglichkeit für mich, um es
verweisen C: /Library/WebServer/Documents/Project2/includes/include.php

Grundsätzlich

, macht es so, dass sie nicht bewusst, etwas außerhalb des eigenen Verzeichnisses. Auch ist es eine Möglichkeit, php.ini die auf einen als auch pro Sub-Domain Basis zu benutzen?

War es hilfreich?

Lösung

Ich glaube, es ist möglich, ein php.ini pro virtuellem Host auf

<VirtualHost *:80>
    ...

    PHPINIDir /full/path/to/php/ini/

</VirtualHost>

Auf diese Weise können Sie open_basedir und andere

anpassen

Andere Tipps

Sie können eine Skripte Fähigkeit begrenzen etwas über einem bestimmten Ordner-Struktur, um zu sehen, indem Sie die open_basedir einen Ordner Block in der Datei httpd.conf Richtlinie. Es soll wie folgt aussehen:

  

     

php_admin_value open_basedir "/ full / path / to / top / Ordner / von / Soll- / Baum /"

     

Eine Sache - wenn Sie den Pfad nicht mit einem Ende / dann ist es ein Wildcard-Spiel. Mit anderen Worten: "/ var / etc / my" passt auf "/ var / etc / myFolder" sowie "/ var / etc / myMothersFolder", während "/ var / etc / my /" nur den genauen Ordner übereinstimmen Name.

In Bezug auf die Anwendungsisolierung ~ ist dies in Bezug auf Sicherung PHP-Skripte, so dass sie andere nicht zugreifen? Bitte erarbeiten -

In Bezug auf die php.ini - ich bin mir nicht bewusst irgendeiner Weise eine bestimmte php.ini pro Verzeichnis zu verwenden, aber man könnte sicherlich ein PHP-Include-Seite mit einem Bündel von ini_set () Linien, vielleicht so etwas wie dieses ..

<?php
  // in your header or along top of all php modules in your pap
  require_once ( '/path/to/includes/ini_set.php' );

  // ...

?>

und das ini_set.php Skript:

<?php
  // one of these for each override of defaults set in php.ini file --
  ini_set ( $varname, $newvalue );
  ini_set ( $varname, $newvalue );
  ini_set ( $varname, $newvalue );
?>

Wenn Sie daran interessiert sind, mehr über die ini_set () Funktion zu lernen, hier ist die Dokumentation Seite auf php.net: http://us3.php.net/ini_set

Hoffe, dass dies etwas hilfreich war ~

Der beste Weg, dies zu tun ist PHP über FCGI (mod_fcgid) zu verwenden. Auf diese Weise können Sie PHP mit einem anderen Benutzer und eine andere php.ini pro vHost ausgeführt werden.

Hier ist ein Beispiel, wie eine solche Konfiguration auf Ubuntu einzurichten: http://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-8.10

Wenn Sie vollständigen Pfadnamen verwenden möchten, können Sie diese verwenden:

<?php
include  dirname( __FILE__ ) . '/includes/include.php';
?>

Mögliche Lösung für php.ini

Versuchen Sie, einen relativen Pfad! Wie:

<?php
include("./includes/include.php");
?>

oder

<?php
include("includes/include.php");
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top