# php-include funktioniert nicht?



## phil-ip (11. Februar 2006)

...

<title>Unbenanntes Dokument</title>

</head>
<?PHP include("http://www.xxxxxxxx.de"); ?>
<body>
</body>
</html>
...

das ist ein ausschnitt aus meiner php datei. allerdings funktioniert die include funktion nicht, warum blos?

danke schon mal! phil


----------



## Gladiator6 (11. Februar 2006)

include "blabla.inc.php";


----------



## hpvw (11. Februar 2006)

Nach 63 Beiträgen sollten Dir die verschiedenen Code-Tags bekannt sein  

Was funktioniert nicht?
Gibt es eine Fehlermeldung?
Hast Du die Warnung auf der Doku-Seite zu [phpf]include[/phpf] berücksichtigt?



			
				include hat gesagt.:
			
		

> Wenn "URL fopen wrappers" in PHP aktiviert sind (in der Standardkonfiguration ist das der Fall) können Sie als Pfad der einzubindenden Datei auch eine URL (via HTTP oder anderen unterstützen Wrappern - eine Liste der unterstützen Protokolle finden Sie unter Anhang M) statt einer lokalen Pfadangabe angeben. Falls der Zielserver die Zieldatei als PHP-Code interpretiert, können Sie an die einzubindende Datei Variablen in einem Request-String übergeben, genauso wie bei HTTP GET. Streng genommen ist das nicht das Gleiche, wie diese Datei einzubinden und diesem den Geltungsbereich des Vater-Skripts zu vererben; das Skript wird auf dem Remote-Server ausgeführt und danach wird das Ergebnis in das lokale Skript eingebunden.
> 
> *Warnung*
> PHP Versionen kleiner 4.3.0 für Windows, erlauben den Zugriff auf Remote-Dateien mit dieser Funktion nicht, selbst wenn allow_url_fopen aktiviert ist.



Gruß hpvw


----------



## Gumbo (11. Februar 2006)

Ich hoffe, du kennst den Urheber der entfernten Ressource, Philip. Denn das ist ein riesen Schlupfloch für allerhand schlimme Dinge.


----------



## Ecthelion (11. Februar 2006)

Warum willst du den etwas zwischen
<head>
und
<body>
einbinden?
Oder habe ich nur was verpasst?


----------



## phoebe (14. Februar 2007)

phil-ip hat gesagt.:


> ...
> 
> [...]
> <?PHP include("http://www.xxxxxxxx.de"); ?>
> ...



Hi phil!

Du kannst mit include nicht einfach x-beliebige Adressen einfügen. 

Wenn ich jetzt z.B. eine Datei test.php hab, in der steht...


```
<p>Hier kann stehen was will, ob HTML.... </p>
<?php
  echo "....oder auch PHP";
?>
```

...und dann eine index.php, in welche ich diese test.php includieren will - etwa so:


```
<html>
<head>
<title>Include-Test</title></head>
<body>
<?php include("test.php") ?>
</body>
</html>
```

Dann findet sich in der index.php nach dem Parsen folgendes:


```
<html>
<head>
<title>Include-Test</title></head>
<body>
<p>Hier kann stehen was will, ob HTML.... </p>
<?php
  echo "....oder auch PHP";
?>
</body>
</html>
```

D.h. es wird einfach der Inhalt von test.php eingefügt.

Jetzt stell dir das aber mal mit einer externen - und somit bereits verarbeiteten - Adresse vor. Das gäbe dann irgendwie so ein Konstrukt:


```
<html>
<head>
<title>Include-Test</title></head>
<body> 
  <html>
  <head>
   <title>Externe Seite</title>
  </head>
   <body>
       Ganz viel Inhalt, der externen Seite.
   </body>
   </html>
</body>
</html>
```

Siehst du das Problem?

Für das was Du machen möchtest, ist include() nicht die richtige Funktion. Du bräuchtest eher sowas wie iFrames oder so... aber da bin ich nicht so die Expertin.

Ich hoffe das hat Dir wenigstens auf Verständnisebene etwas weiter geholfen.

Liebe Grüsse und viel Glück

phoebe

PS: sollte ich jetzt völligen Quatsch erzählt haben, bitte ich die Experten mich zu korrigieren ^^


----------



## AMDbuster (12. September 2009)

hi.



phoebe hat gesagt.:


> ...und dann eine index.php, in welche ich diese test.php includieren will - ...



Kann es auch eine *.html sein? Habe gerade ein ähnliches problem. Wollte meine navi auslagern, doch ich seh sie nicht. Mein php counter allerdings funktioniert.

G amdbuster

p.s. so stehts in der html:


```
<?php
  include ($_SERVER["DOCUMENT_ROOT"] . "../navi.php") ;
  ?>
```


----------



## Maik (12. September 2009)

Hi,


AMDbuster hat gesagt.:


> Kann es auch eine *.html sein?



speicher mal die HTML-Datei als PHP-Datei ab, damit der enthaltende PHP-Code vom PHP-Parser ausgeführt wird.

Falls es sich hier um einen Apache-Server handelt, kann auch diese Zeile in einer .htaccess-Datei angegeben werden, um auf dem Server HTML-Dateien vom PHP-Parser interpretieren zu lassen:

```
AddType application/x-httpd-php .htm .html
```


mfg Maik


----------



## AMDbuster (13. September 2009)

hi.

als php kommt folgende Meldung:


```
Warning: include() [function.include]: open_basedir restriction in effect. File(/users/pixelmanie/www/../navi.php) is not within the allowed path(s): (/users/pixelmanie/temp:/users/pixelmanie/www) in /users/pixelmanie/www/vids/movi_ab.php on line 22

Warning: include(/users/pixelmanie/www/../navi.php) [function.include]: failed to open stream: Operation not permitted in /users/pixelmanie/www/vids/movi_ab.php on line 22

Warning: include() [function.include]: Failed opening '/users/pixelmanie/www/../navi.php' for inclusion (include_path='.') in /users/pixelmanie/www/vids/movi_ab.php on line 22
```

Soll das heisen das navi.php nicht gefunden wird, ist der befehl falsch?
In line 22 steht der _include_ befehl(wie evtl schon mitbekommen ). 

_../navi.php_ habe ich mit "." & '.' probiert.

Muß jede Seite wo man php sachen aufruft auch als *.php speichern? D.h. ich habe am ende alles php Dateien ?!

g amdbuster


----------



## Maik (13. September 2009)

Moin.


AMDbuster hat gesagt.:


> als php kommt folgende Meldung:
> 
> 
> ```
> ...


Wenn einem diese Fehlermeldung nichts sagt, kann man dazu  die Suchmaschine seines Vertrauens konsultieren.

 Warning: include() [function.include]: open_basedir restriction in effect 

Versuch's hier mal mit einem absoluten Pfad, denn *navi.php* befindet sich im Verzeichnisbaum nicht über "DOCUMENT_ROOT" *www/*:

```
<?php
  include ($_SERVER["DOCUMENT_ROOT"] . "/navi.php") ;
?>
```
Mit absoluten Pfadangaben relativ zum Basis-URI referenzieren



AMDbuster hat gesagt.:


> Muß jede Seite wo man php sachen aufruft auch als *.php speichern? D.h. ich habe am ende alles php Dateien ?!


Hast du meine gestrige Antwort übersehen? Oder ihre Aussage nicht verstanden?

HTML-Dateien werden zunächst mal vom HTML-Parser gelesen und ausgeführt, der keinen PHP-Code interpretiert, es sei denn, der Server ist so konfiguriert, diesen Dateityp vom PHP-Parser verarbeiten zu lassen.

mfg Maik


----------



## sniffles (24. September 2010)

Hi Leute

Ich habe ebenfalls ein Problem mit include.

Hier mal die Seite: http://www.peefine.ch/page.php

Und hier der Code:


```
<div class="overview-table-inner">
                <h4>Umfrage</h4>
                  <?php include("/phppoll/poll.php");
                   ?>                                                                                                          
         </div>
```

Auf der Seite sieht man oben rechts die Überschrift "Umfrage", aber die php Datei wird nicht ausgegeben.

Auf dem Server befindet sich im Stammverzeichnis der Ordner "phppoll" und in diesem die Datei "poll.php". Die Datei selbst funktioniert wenn ich den direkten Link, http://www.peefine.ch/phppoll/poll.php eingebe.

Somit ist auch ausgeschlossen dass es aum Server liegt.

Ich hoffe jemand kann mit weiterhelfen.
Danke


----------



## Alex_T (25. September 2010)

Moin,

@sniffles:
Das Problem bei dir liegt in dem "/" vor dem Ordnernamen begraben. Wenn du das dort setzt, wird davor ein Ordnername erwartet. Da davor jedoch nichts steht, funktioniert das auch nicht.

Es müsste also so aussehen:


```
<?php
include_once('phppoll/poll.php');
?>
```


----------



## sniffles (27. September 2010)

Hi Alex

Vielen Dank für deine Hilfe.
Es hat wunderbar geklappt.

Nun habe ich ein weiteres Problem.
Ich möchte gerne 4 Umfragen auf meiner Seite anbieten, also es sind alles verschiedene php Dateien.

Diese wollte ich ein eine Tabelle mit 4 Spalten einsetzten.
Ich habe die einzelen php dateien getestet und sie funktionieren auch, aber wenn ich eine Tabelle erstelle, zeigt es mir immer nur die erste Umfrage an.

Hier mal der Code:

```
<div class="art-postcontent">
                                            <table>
                                            <tr>
                                            <td>
                                             <?php include("phppoll_1/poll_1.php");
                                             ?>
                                            </td>
                                            <td>
                                             <?php include("phppoll_2/poll_2.php");
                                             ?>
                                            </td>
                                            <td>
                                             <?php include("phppoll_3/poll_3.php");
                                             ?>
                                             </td>
                                             <td>
                                             <?php include("phppoll_4/poll_4.php");
                                             ?>
                                             </td>
                                             </tr>
                                             </table>                                                    

                                            </div>
```

Wie gesagt, die php dateien funktionieren einzeln und der Pfad ist auch richtig, habs mehrmals getestet. 

Ich habe noch eine Datei erstellt wo ich nur die Tabelle mit den php files per include eingefügt habeu nd das selbe Resultat. Es wird immer nur die erste php datei in der ersten Zelle ausgegeben. Der rest nicht.

Danke für die Hilfe
Sniffles


----------



## Alex_T (27. September 2010)

Grüße,

@sniffles:
ich hab das hier mal aus deinem Quelltext der Seite extrahiert:


```
<td>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<link rel="stylesheet" type="text/css" href="../phppoll_1/poll_1.css">
</head>
<body>

<table border=0 cellspacing=0 cellpadding=0 width=160>
<tr><td>
<div>

<div class="poll_text">Welches sind Ihre wichtigsten Prinzipien?</div>
<form style="margin:0px;" action="/page.php?paction=vote" method="POST">
<div class="poll_votelist"><div class="poll_voteitem"><input type="radio" name="pvote" value="1">Hygiene</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="2">Angst</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="3">Sauberkeit</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="4">Schmutz</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="5">Dreck</div>

</div>
<div style="text-align:center;"><input type="submit" name="submit" value="Abstimmen"></div>
</form>
<div style="text-align:center; margin-top:5px;"><a href="/page.php?paction=result">Ergebnisse anzeigen</a></div>

</div>
</td></tr></table>

</body>
</html>
                                            </td>
```

so wie das aussieht, hast du kurzerhand einfach nochmal ein paar <html>-,<head>-,<body>-Tags gesetzt, was so natürlich nicht geht .

Zum Hintergrund:
PHP bindet die Datei so ein, wie sie vorliegt und die wird auch so geparsed.
Dass heißt, der Code der in der einzubindenden Datei steht, wird ohne Rücksicht einfach so in den bestehenden eingefügt (dort wo include aufgerufen wird).

Du kannst also in der Datei, welche inkludiert werden soll, nicht nochmal ein HTML-Grundgerüst einbauen, da sich sonst letztendlich zwei öffnende html-tags in deinem Code befinden und das ganze nicht mehr interpretiert werden kann.

Die einzubindende Datei müsste folglich so aussehen:

```
<table border=0 cellspacing=0 cellpadding=0 width=160>
<tr><td>
<div>

<div class="poll_text">Welches sind Ihre wichtigsten Prinzipien?</div>
<form style="margin:0px;" action="/page.php?paction=vote" method="POST">
<div class="poll_votelist"><div class="poll_voteitem"><input type="radio" name="pvote" value="1">Hygiene</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="2">Angst</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="3">Sauberkeit</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="4">Schmutz</div>
<div class="poll_voteitem"><input type="radio" name="pvote" value="5">Dreck</div>

</div>
<div style="text-align:center;"><input type="submit" name="submit" value="Abstimmen"></div>
</form>
<div style="text-align:center; margin-top:5px;"><a href="/page.php?paction=result">Ergebnisse anzeigen</a></div>

</div>
</td></tr></table>
```


----------



## sniffles (27. September 2010)

Hi Alex

Danke für deine Antwort.
Muss ich in dem Fall die html, head und body tags in den vier verschiedenen php Dateien (phppoll_1.php, phppoll_2.php, phppoll_3.php und phppoll_4.php) löschen?

Ich sende dir im Anhang mal eine der php dateien, damit du sie dir anschauen kannst.

Danke dir!
Sniffles


----------



## sniffles (27. September 2010)

Hi Alex

Ich habe soeben die html tags aus den php dateien gelösch und der Quelltext sieht jetzt so aus wie du es oben gezeigt hast.
Das Problem liegt jedoch noch immer vor.
Kann es sein dass in folgendem Code

```
<div class="art-postcontent">
                                            <table>
                                            <tr>
                                            <td>
                                             <?php include("phppoll_1/poll_1.php");
                                             ?>
                                            </td>
                                            <td>
                                             <?php include("phppoll_2/poll_2.php");
                                             ?>
                                            </td>
                                            <td>
                                             <?php include("phppoll_3/poll_3.php");
                                             ?>
                                             </td>
                                             <td>
                                             <?php include("phppoll_4/poll_4.php");
                                             ?>
                                             </td>
                                             </tr>
                                             </table>                                                    

                                            </div>
```
etwas zu tun hat? Habe ich irgend eine Regel nicht beachtet?

Gruss
Sniffles


----------



## Alex_T (27. September 2010)

Ja die musst du in allen verschiedenen Dateien löschen (phpoll_1.php, phppoll_2.php, phppoll_3.php, phpoll_4.php), da du sie ja auch alle einbindest.


----------



## sniffles (27. September 2010)

Habe ich gemacht, doch es funkzioniert leider immer noch nicht.
Also die Daateien fangen jetzt mit <?php an und es folgt gleich der Code für das Poll; kein HTML mehr drin.

Das Problem scheint irgendwo anders zu liegen :-(


----------



## Alex_T (27. September 2010)

Wenn du alles entfernt hast, was überflüssig ist (siehe vorherige posts), dann müsste das Ganze reibungslos funktionieren. Ansonsten würde ich sagen, dass der Fehler momentan in der 2. Datei liegt, da diese nicht mehr ausgeführt wird.


----------



## Alex_T (27. September 2010)

Ich habe übrigens gerade folgende Zeile in der 2. Datei gefunden:


```
<table border=0 cellspacing=0 cellpadding=0 width=160>
```

...die Zahlen sollten in '' oder in "" gefasst werden. Wobei sich bei der Arbeit mit PHP die einfachen Anführungszeichen anbieten um unnötiges escapen zu umgehen.


----------



## sniffles (28. September 2010)

Hi Alex

Danke für deine Unterstützung, doch leider hat sich das Problem trotz allen Änderungen nicht gelöst.
Ich habe mal eine test.php Datei erstellt und eine simple vierspaltige Tabelle gemacht. 
Wenn ich in jede Zelle was schreibe wird es auch angezeigt, aber wenn ich die vier "include" bBefehle eingebe, wird nur die erste ausgegeben. 
Besser gesagt es wird immer nur eine ausgegeben. Wenn ich nummer eins lölsche, wird nummer zwei ausgegeben.


----------

