Wie die PHP-include-Pfad über .htaccess?
Möchte ich um die PHP-include-Pfad zu einem anderen Verzeichnis. Ich habe versucht, dies in einer .htaccess-Datei, aber das hat nicht funktioniert. Das einzige, was ich sehe, ist der include-Pfad ist ich in httpd.conf, aber nicht die, die ich habe versucht, hinzufügen.
<IfModule mod_php5.c>
php_value include_path ".:/var/www/mywebsite/"
</IfModule>
Was mache ich falsch?
Ich habe a2enmod mod_php5
, aber es wurde bereits ausgeführt, so nehme ich an, PHP5 ist schon die Ausführung als Apache-Modul.
[EDIT] In meiner vhost config habe ich dieses:
<Directory ~ "^/var/www/.*">
AllowOverride All
Options FollowSymLinks -Indexes -MultiViews
php_value include_path ".:./include:./.include/:/var/www/.include/:/var/www/"
</Directory>
Mehr info (phpinfo()
):
Loaded Modules core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_auth_mysql mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_status
include_path .:./include:./.include/:/var/www/.include/:/var/www/ .:/usr/share/php:/usr/share/pear
Grüße,
Kevin
- Wenn Sie es als php-Modul sollte es funktionieren. Überprüfen Sie die mod_php5.c Modul nicht installiert ist, und überprüfen Sie den Pfad.
phpinfo()
ist dein Freund. - Danke, ich werde nach meinem
phpinfo()
bald ;). - Etwas offtopic, aber wenn Sie common config-Datei, die Sie verwenden können,
set_include_path()
zu änderninclude_path
zur Laufzeit. - Ja, werde ich nehmen Sie diese option in Betracht. Aber ich will zuerst sicher sein, ob es möglich ist. Ich immer noch lieber ein Einzelzimmer
.htaccess
Linie ;). - Hat Ihr
.htaccess
befinden sich im document-root? - Ich verstehe. Sie kennen sollten
auto_prepend_file
-Richtlinie als gut. Nicht, dass dieses funktioniert über .htaccess (oder, wenn es wäre, der include-Pfad würde als gut), aber ich denke es lohnt sich zu wissen, in Ihrem Kontext. - Einstellung
include_path
im.htaccess
mitphp_value include_path .
für mich funktioniert. Mit Apache 2.2 und PHP 5.3.5 unter Windows. Virtuelle host hatAllowOverride All
. - ja, es ist in
/var/www/mywebsite
(/var/www/mywebsite.htaccess
) /var/www/mywebsite.htaccess
(wie im Kommentar) oder/var/www/mywebsite/.htaccess
?- Beh, ich meinte
/var/www/mywebsite/.htaccess
in der Tat ;).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Apache muss so konfiguriert sein, dass die Einstellungen überschrieben werden via .htaccess. Überprüfen Sie Ihre Apache-Konfigurationsdatei (httpd.conf) für eine überschreibung für Ihr Verzeichnis:
Platzieren Sie diese innerhalb der vhost-definition für Ihre Website.
Ist dies eine Globale änderung ist, sollten Sie die include_path-Einstellung Ihrer php.ini-Datei anstelle der Verwendung .htaccess.
Diese beiden änderungen erfordern einen Neustart des Apache.
BEARBEITEN:
Dies ist ein Zitat aus der Apache Core features-Seite:
"Nehmen wir an, dass die Dateinamen, auf die zugegriffen wird /home/abc/public_html/abc/index.html.
Der server betrachtet jeden /, /home, /home/abc /home/abc/public_html, und /home/abc/public_html/abc in dieser Reihenfolge. In Apache 1.2, wenn /home/abc betrachtet wird, wird der reguläre Ausdruck mit und angewendet werden. In Apache 1.3 die dem regulären Ausdruck nicht berücksichtigt, an diesem Punkt in der Struktur. Es wird nicht berücksichtigt, bis alle normalen s und .htaccess-Dateien angewendet wurden. Dann wird der reguläre Ausdruck mit /home/abc/public_html/abc und angewendet werden."
Denke ich, basierend auf diesen Informationen, die Ihr
php_value include_path
- Anweisung ausgewertet wird nach das .htaccess-Datei. Wenn das der Fall ist, den Wert, den Sie verwenden, fürinclude_path
im .htaccess wird überschrieben. Können Sie versuchen, das entfernen desinclude_path
Linie von<Directory>
vorübergehend, diese Theorie zu testen?<Directory>
Richtlinie, oder 2. Schließen Sie den vollständigen Pfad in Ihr .htaccess-Dateien.haben Sie versucht, diese in Ihrem PHP-code (oben auf dem code):
Sie können versuchen, mit chdir() in der php-Datei an einem anderen Ort als Basis-Standort für alle Datei-Funktionen, darunter gehören =)
.htaccess
Linie 🙂