PHP Datei in files directory ausführen
am 03.09.2009 - 11:06 Uhr in
Drupal Version 6.13
Ich möchte folgendes realisieren:
- eine Seite mit lightbox2 ruft einen iframe auf
- in dem iframe wurd ein upload-formular(php/html) geöffnet
- die eigentliche upload.php liegt in einem Unterordner der files-Directory
- die upgeloadete Datei sollte in dem Ordner mit der php landen
das Problem:
wenn das php-Skript aufgerfufen wird bietet es drupal zm download an anstatt es auszuführen
ich denke man müsste eine htaccess in den Ordner mit dem Skript legen,
um es von den fils-Ordner Einstellungen zu befreien.
Ich bekomm aber einfach nicht raus was in die htaccess rein muss oder wo das Problem sonst liegen könnte.
Irgendeine Idee
- Anmelden oder Registrieren um Kommentare zu schreiben

Was willst Du eigentlich wissen?
am 03.09.2009 - 12:11 Uhr
Was ist der Unterschied zwischen der php Datei und der eigentlichen PHP Datei?
Wenn sich die eigentliche php Datei in einem Unterordner von files befindet wo befindet sich dan die andere php Datei?
Welche Datei ist nun das php-Script und in welchem Ordner genau liegt es?
Meinst Du mit files den Ordner sites/default/files ?
Normalerweise befindet sich in sites/default/files bereits eine .htaccess.
Gibt es diese in Deinem Ordner sites/default/files ? Wenn ja was ist ihr Inhalt?
------------------------
Quiptime Group
Tut mir Leid etwas
am 03.09.2009 - 15:15 Uhr
Tut mir Leid etwas schwammig...
es ist eine php Datei in der files-Directory.
Die liegt bei mir nicht in default sondern im root-Verzeichnis des Servers.
in default ist auch sonst nichts außer die settings.
mit files ordner meine ich den Ordner in dem Drupal alle Nutzerinhalte ablegt.
Wer stellt eigentlich in
am 03.09.2009 - 15:37 Uhr
Wer stellt eigentlich in diesem Thread die Fragen.
Ist das root-Verzeichnis des Servers identisch mit dem root von Drupal?
Vermutlich nicht.
Wie wird PHP in Deinem Server ausgefuehrt? Als Script?
Vermutlich als Script.
Wenn ja hat dann der virtuelle Host in dem sich Drupal root befindet eine entsprechende Webserverkonfiguration damit PHP als Script ausgefuehrt wird?
Vermutlich hat er sonst wuerde Drupal nicht funktionieren.
Wenn ja fehlt dann diesem ominoesen files Ordner diese Konfiguration?
Vermutlich ja.
Deiner Problemschilderung fehlen wichtige erklaerende Zusammenhaenge um dem Problem
wenn das php-Skript aufgerufen wird bietet es drupal zm download an anstatt es auszuführen
nachzugehen.
Wenn Du an der Webserverkonfiguration nichts aendern kannst dann verwende doch statt des ominoesen files Ordner den Ordner sites/default/files.
------------------------
Quiptime Group
Okay eigentlich ist es ganz
am 03.09.2009 - 16:26 Uhr
Okay eigentlich ist es ganz einfach.
drupal liegt im root: /
die files directory liegt in drupal: /files/
darin liegt ein php Script: /files/ordner/sript.php
<?echo "Hello World";
?>
Wenn ich das Skript jetzt aufrufe z. B. durch einen Link wird mir die php-Datei zum download angeboten
bzw. sieht man den Code
<?echo "Hello World";
?>
Das Problem ist die Download-Methode: Öffentlich – die Dateien sind direkt über HTTP erreichbar
Die erlaubt alle Datei aus dem files Verzeichnis aufzurufen und runterzuladen.
Dieses Verhalten muss irgendwie über die htaccess definiert sein und ich möchte es für ein ganz bestimmtes Verzeichnis außer Kraft setzen/überschreiben.
Klarheit. Befindet sich im
am 03.09.2009 - 16:35 Uhr
Klarheit.
Befindet sich im Ordner /files/ordner/ eine .htaccess Datei?
Gibt es in der .htaccess Datei in Drupal root irgendwelche Regeln fuer Inhalte in /files/
Gibt es in der Webserver-Konfiguration Regelungen fuer den Ordner /files/ in Drupal root?
------------------------
Quiptime Group
Der Server ist gehostet, da
am 03.09.2009 - 17:21 Uhr
Der Server ist gehostet, da sollte keine Regelung für die files directory sein.
in dem Ordner sind keine htaccess
Inhalt der .htaccess in root
1.#2.# Apache/PHP/Drupal settings:
3.#
4.
5.# Protect files and directories from prying eyes.
6.<FilesMatch "\.(engine|inc|info|install|module|profile|test|tpl(\.php)?|po|sh|.*sql|theme|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
7.Order allow,deny
8.</FilesMatch>
9.
10.# Don't show directory listings for URLs which map to a directory.
11.Options -Indexes
12.
13.# Follow symbolic links in this directory.
14.Options +FollowSymLinks
15.
16.# Make Drupal handle any 404 errors.
17.ErrorDocument 404 /index.php
18.
19.# Force simple error message for requests for non-existent favicon.ico.
20.<Files favicon.ico>
21.# There is no end quote below, for compatibility with Apache 1.3.
22.ErrorDocument 404 "The requested file favicon.ico was not found.
23.</Files>
24.
25.# Set the default handler.
26.DirectoryIndex index.php
27.
28.# Override PHP settings. More in sites/default/settings.php
29.# but the following cannot be changed at runtime.
30.
31.# PHP 4, Apache 1.
32.<IfModule mod_php4.c>
33.php_value magic_quotes_gpc 0
34.php_value register_globals 0
35.php_value session.auto_start 0
36.php_value mbstring.http_input pass
37.php_value mbstring.http_output pass
38.php_value mbstring.encoding_translation 0
39.</IfModule>
40.
41.# PHP 4, Apache 2.
42.<IfModule sapi_apache2.c>
43.php_value magic_quotes_gpc 0
44.php_value register_globals 0
45.php_value session.auto_start 0
46.php_value mbstring.http_input pass
47.php_value mbstring.http_output pass
48.php_value mbstring.encoding_translation 0
49.</IfModule>
50.
51.# PHP 5, Apache 1 and 2.
52.<IfModule mod_php5.c>
53.php_value magic_quotes_gpc 0
54.php_value register_globals 0
55.php_value session.auto_start 0
56.php_value mbstring.http_input pass
57.php_value mbstring.http_output pass
58.php_value mbstring.encoding_translation 0
59.</IfModule>
60.
61.# Requires mod_expires to be enabled.
62.<IfModule mod_expires.c>
63.# Enable expirations.
64.ExpiresActive On
65.
66.# Cache all files for 2 weeks after access (A).
67.ExpiresDefault A1209600
68.
69.# Do not cache dynamically generated pages.
70.ExpiresByType text/html A1
71.</IfModule>
72.
73.# Various rewrite rules.
74.<IfModule mod_rewrite.c>
75.RewriteEngine on
76.
77.# If your site can be accessed both with and without the 'www.' prefix, you
78.# can use one of the following settings to redirect users to your preferred
79.# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
80.#
81.# To redirect all users to access the site WITH the 'www.' prefix,
82.# (http://example.com/... will be redirected to http://www.example.com/...)
83.# adapt and uncomment the following:
84.# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
85.# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
86.#
87.# To redirect all users to access the site WITHOUT the 'www.' prefix,
88.# (http://www.example.com/... will be redirected to http://example.com/...)
89.# uncomment and adapt the following:
90.# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
91.# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
92.
93.# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
94.# VirtualDocumentRoot and the rewrite rules are not working properly.
95.# For example if your site is at http://example.com/drupal uncomment and
96.# modify the following line:
97.# RewriteBase /drupal
98.#
99.# If your site is running in a VirtualDocumentRoot at http://example.com/,
100.# uncomment the following line:
101.# RewriteBase /
102.
103.# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
104.RewriteCond %{REQUEST_FILENAME} !-f
105.RewriteCond %{REQUEST_FILENAME} !-d
106.RewriteCond %{REQUEST_URI} !=/favicon.ico
107.RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
108.</IfModule>
109.
110.# $Id: .htaccess,v 1.90.2.3 2008/12/10 20:04:08 goba Exp $
111.
Inhalt der .htaccess in /files
1. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_0062. Options None
3. Options +FollowSymLinks
Habe gleiches Problem
am 28.06.2013 - 13:58 Uhr
Hallo,
auch ich habe das Problem, dass ein Link auf einer meiner Seiten als Download geöffnet, statt ausgeführt wird.
Es handelt sich um einen Flash-Rundgang der in einem iframe eingebettet ist:
<iframe src="<?php print base_path(); ?>sites/default/files/tour/index.php" width="610" height="400" scrolling="no"></iframe>In einer älteren Version(Rundgang), als index.html, lief alles einwandfrei, aber als php-Version halt nicht mehr. Mir fiel auf, dass phpinfo auch nicht ausgeführt wird.
Der PHP-Filter ist aktiv. PHP code auf der Seite ausgewählt. Der Rundgang ist, alleine ausgeführt, funktionsfähig.
Eine .htaccess im Ordner files gibt es mit folgendem Inhalt:
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006Options None
Options +FollowSymLinks
Ich bin kein Programmierer und weiß hier einfach nicht mehr weiter.
Die Seite liegt auf einem shared-hosting-server mit PHP 5.2 (KEIN 1&1!)
Auf meinem xampp-server läuft alles.
Ich wäre über konstruktive Hilfe dankbar, da ich sonst nirgends Lösungen gefunden habe.
Vielleicht geht: etHandler
am 28.06.2013 - 16:33 Uhr
Vielleicht geht:
etHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006Options None
Options +FollowSymLinks
Options -Indexes
DirectoryIndex DEINEPHPDATEI.PHP
Geht und geht nicht
am 01.07.2013 - 09:56 Uhr
Danke für die schnelle Hilfe.
Ich habe die gleiche Seite auf dem selben Server zum Testen und Üben auf einer anderen Domain laufen.
DANKE - dort gehts
Aus lauter Freude habe ich die Änderungen am Original vorgenommen - dort gehts nicht (bekomme Script-Fehler-Meldung)
Einziger Unterschied: Die Testumgebung läuft auf PHP5.3 während das Original auf PHP5.2 läuft
Ist das ein relevanter Grund? Auch wollte ich mich mit den Begriffen SetHandler und etHandler auseinander setzen, finde aber darüber keine Erklärung.
Finde nur addHandler?! Das übersteigt aber wieder massiv mein Wissen über die Thematik.
SetHandler etHandler
am 01.07.2013 - 17:40 Uhr
Es muss natürlich nur SetHandler heissen, das andere ist ein Tippfehler von mir.
Kannst Du mal Deine php.ini hier reinstellen?
Hintergrundinfos zu htaccess gibt es hier: http://de.selfhtml.org/servercgi/server/htaccess.htm
PHP.INI nicht vorhanden
am 01.07.2013 - 21:33 Uhr
Hey,
wenn das ein Tippfehler war, dann warst du nicht der erste(da gibt es noch andere Einträge) - aber egal. Das kann man ja ändern.
Das mit der PHP.INI ist so ne Sache.
Es gibt keine - keine auf die ich jetzt zugreifen kann.
Mein Hoster gibt mir die Möglichkeit eine anzulegen und hochzuladen. Diese würde dann volle Priorität haben vor allen anderen.
Der Server läuft im Augenblick "managed" mit PHP5.2.17-secure:
allow_url_fopen Off
allow_url_include Off
register_globals Off
Danke für den Link - werde mich damit genüsslich quälen
Die Testumgebung mit PHP5.3.10-secure und Tippfehler läuft doch aber, komischerweise? Da werde ich nicht schlau draus.
Probier mal diese PHP.ini
am 01.07.2013 - 22:19 Uhr
Probier mal diese PHP.ini aus:
<VirtualHost *:80><Directory />
Options FollowSymLinks Indexes
AllowOverride All
Order Deny,Allow
Allow from All
</Directory>
</VirtualHost>
Sorry, aber das hat mit der
am 01.07.2013 - 22:57 Uhr
Sorry, aber das hat mit der php.ini nicht zu tun. Das ist die Definition eines Hosts in der apache2 Konfiguration!!
Beste Grüße
Werner
Mein Gedanke wäre gewesen,
am 02.07.2013 - 05:23 Uhr
Mein Gedanke wäre gewesen, mit AllowOverride all die Veränderung in der htaccess zu erlauben, aber ich lasse mich gerne eines besseren belehren. Jetzt habe ich auch nochmal die Frage oben gelesen:
Aus lauter Freude habe ich die Änderungen am Original vorgenommen - dort gehts nicht (bekomme Script-Fehler-Meldung)
Vielleicht ist das eh der falsche Ansatz, was ist denn das für eine Fehlermelsug genau?
Fehlermeldung
am 02.07.2013 - 11:21 Uhr
Bekomme
Fehler 500 Script-FehlerDieser Fehler kommt von meinem Hoster und nicht von Drupal
Dieser Fehler wurde auch nur angezeigt durch den Fehler etHandler / addHandler
Mit:
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006Options None
Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
bekomme ich wieder nur einen Download der Datei index.php angeboten
Frage:
die .htaccess bezieht sich auf den Ordner files und alle Unterordner? oder brauche ich in dem besagten Unterordner auch eine .htaccess?
Soweit ich mich erinnere
am 02.07.2013 - 11:39 Uhr
Soweit ich mich erinnere sperrt Drupal die Ausführung von PHP-Code im Files-Verzeichnis. Das ist ein Sicherheitsfeature, damit nicht über einen Trick Code dorthin geladen werden (über irgend einen Upload) und dann ausgeführt werden kann. Wenn Du eigenen PHP-Code auf Deine Seite bringen willst, gehe den Weg über ein eigenes Modul, das Du in Drupal einbindest.
Beste Grüße
Werner
Dateiordner umplazieren
am 02.07.2013 - 13:47 Uhr
Ich habe den Ordner(mit dem Rundgang) mal in das Hauptverzeichnis meiner drupalsite kopiert und dort scheint es zu laufen.
Ich bekomme zwar jetzt einen Parse error unter der mobilen Version, aber ich denke, dass ist jetzt kein Fehler der hier her passt.
Wäre denn dass generell ein Weg der gegangen werden könnte oder gibt es da ein Sicherheitsproblem?