Sponsor-Board.de

Normale Version: Include Funktion funktioniert nicht mehr
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebe Community,

Vor kurzem ist bei einem Webserver ein recht seltsamer Fehler aufgetretten. Die Include Funktion von meinem Raspberry Pi Apache 2 Server funktioniert nicht mehr.

Die Funktion hatte schon mal Funktioniert, das weiß ich, da ich eine kleine Webseite von früher genommen habe und auf der wurden sämtliche Inhalte mit der include() Funktion eingefügt.

Bislang konnte ich den Fehler noch nicht beheben, da dies etwas weiter als mein aktuelles Wissen geht.

In der Log Datei stand anfangs jedenfalls folgendes:

Zitat:
PHP Warning: include(): Failed opening 'Include/first_table.php' for inclusion (include_path='.:/usr/share/php:/usr/shar/pear') in /var/www/index.php on line 22


bisher hab ich es mit folgendem Versucht:

Code:
ini_set('include_path', '/var/www/Include');


und es hat keine Wirkung gezeigt.

Die Fehlermeldung hat sich nur leicht verändert.

Zitat:
PHP Warning: include(): Failed opening 'Include/first_table.php' for inclusion (include_path='/var/www/Include') in /var/www/index.php on line 24


Ich würde mich über eure Hilfe freuen und solange muss ich wohl ohne Include auskommen. (den Code kann ich spüter ja immernoch mit Include einfügen Tongue)

Mit freundlichen Grüßen
VarmintLP

Ich glaube, das wonach du suchst ist open_basedir => [Link: Registrierung erforderlich]

Storage-Base.de schrieb:
Ich glaube, das wonach du suchst ist open_basedir => [Link: Registrierung erforderlich]


Das könnte es sein, aber wo finde ich die Datei?

Das ist eine direktive für PHP, damit schaltest du Ordner frei, welche so eigentlich nicht erreichbar sind.

Prinzipiell steht diese in der php.ini, sofern du aber auch ini_set dafür verwenden kannst, kannst du es auch darüber setzen - allerdings solltest du schauen, dass z.B. der /tmp Ordner für die PHP Sessions drin bleibt. Ich würde davon abraten und empfehle es direkt in das http-Verzeichnis abzulegen, mit der direktive kannst du auch die Sicherheit deines Systems gefährden.

Storage-Base.de schrieb:
Das ist eine direktive für PHP, damit schaltest du Ordner frei, welche so eigentlich nicht erreichbar sind.

Prinzipiell steht diese in der php.ini, sofern du aber auch ini_set dafür verwenden kannst, kannst du es auch darüber setzen - allerdings solltest du schauen, dass z.B. der /tmp Ordner für die PHP Sessions drin bleibt. Ich würde davon abraten und empfehle es direkt in das http-Verzeichnis abzulegen, mit der direktive kannst du auch die Sicherheit deines Systems gefährden.


Naja das Ganze ist nur für ein Schulprojekt. Es muss nicht die Top Sicherheit haben, da ich nur die Temperatur werde in eine Tabelle reinschreibe und den Aktuellen Wert auslesen soll. Aber dieses dumme Include funktioniert einfach nicht.

Außerdem habe ich Probleme meine SQL Datenbank über die Webseite zu erreichen. Ich kann über phpmyadmin rein aber nicht per mysqli_connect...

weißt du da vielleicht noch einen Rat?

Nunja, du kannst dir das leben eben auch schwer machen wenn du den Webserver verbiegen willst - mach es doch einfach gleich alles richtig, dann klappt es auch.

Dir ist klar, dass MySQLi OOP ist? Für ein Schulprojekt mehr als überzogen, außer das Thema ist OOP - ansonsten => [Link: Registrierung erforderlich]

Ohne gescheite Fehlermeldungen ([Link: Registrierung erforderlich]) und ggf. Source Code kann mir dir schwer helfen.

Prinzipiell kann ich dir die PHP.net Seite nur empfehlen - da findest du eigentlich alles was du brauchst.

Storage-Base.de schrieb:
Dir ist klar, dass MySQLi OOP ist? Für ein Schulprojekt mehr als überzogen, außer das Thema ist OOP - ansonsten => [Link: Registrierung erforderlich]


falsch
MySQLi kann man sowohl prozedular als auch objekt orientiert benutzen => [Link: Registrierung erforderlich]

PDO wäre rein OOP benutzbar

von mysql_* rate ich ab da es veraltet ist und mysqli es ersetzt hat

Also mein MySQL Verbindungscode von einer Homepage ist folgender:


Code:
$con = mysqli_connect($IP, $Account, $Password) //Eingabe des Datenbankdaten
      or die("Verbindungsaufbau Fehlschlag.");
      
    mysqli_select_db($con, "RaspPiThermo"); //Auswahl der Datenbank


Ich teste das ganze mit 2 Verschiedenen Servern. Zum einen den von der Schule, zu dem ich ohne weiteres eine Verbindung aufbauen kann. Sobald ich aber die Daten von meinem SQL Server eingebe funktioniert es nicht.

Ja ich bin mir sicher die Angaben sind richtig, da ich mich auch mit einem Skript im Terminal auf meine Datenbank verbinden kann und ich die Angaben von da kopiert habe. Fehler ist da also ausgeschlossen. (Der Rest meiner Klasse hat den gleichen Fehler.)

Ich suche jetzt wahrscheinlich für Stunden den Bug im Datenhaufen.

Also ich den MySQL Server installier habe, habe ich folgendes eingegeben:

apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Edit: Mittlerweile hat sich das Problem gelöst, wenn auch nur sehr simple und da hät ich auch draufkommen können, es ist trotzdem nur eine simple Lösung.

Als IP wurde einfach der Loopback genommen, aber es stellt sich für mich weiterhin die Frage, wieso es nicht einfach über die normale IP des Servers geht. :/

Die Frage kannst du dir selbst beantworten, wenn du mal nach der Zeile "bind-address" in der Konfiguration des MySQL-Servers suchst. Unter Debian ist das /etc/MySQL/my.cnf

VarmintLP schrieb:
Als IP wurde einfach der Loopback genommen, aber es stellt sich für mich weiterhin die Frage, wieso es nicht einfach über die normale IP des Servers geht. :/


in der standard konfiguration horcht mysql nur auf localhost (127.0.0.1)
wenn du es auf der public ip laufen lassen willst musst du entsprechend die angabe "bind-address = 127.0.0.1" in der datei /etc/mysql/my.cnf anpassen (z.b. zu demhier "bind-address = 0.0.0.0" damit lauscht der mysql server auf allen ips)

hättest du aber sicherlich mit 2 sekunden google benutzen dir selber beantworten können
im zweifel einfach die konfigurations datein anschauen

Seiten: 1 2
Referenz-URLs