it-swarm.com.de

Was bedeutet es "(include_path = '.: / usr / share / pear: / usr / share / php')"?

Ich habe Dateistruktur auf EC2 wie: aber vor einigen Dateiverweisproblemen.

index.php
-db
  -config.php
-cron
  -cron1.php

Ich habe versucht, auf folgende Dateien zu verweisen:

`require_once (dirname(__FILE__).'/db/config.php');`
`require_once (($_SERVER['DOCUMENT_ROOT']).'/db/config.php');`

aber cron läuft nicht. es gibt fehler in mail als

`PHP Warning:  require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3

Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3

PHP Fatal error:  require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3

Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3`
17
ketul shah

Wenn Sie sich die PHP Konstante PATH_SEPARATOR ansehen, werden Sie sehen, dass es für Sie ":" ist.

Wenn Sie die Zeichenfolge ".:/Usr/share/pear:/usr/share/php" mit diesem Zeichen aufteilen, erhalten Sie 3 Teile

  • . (dies bedeutet, dass sich das aktuelle Verzeichnis befindet, in dem sich Ihr Code befindet)
  • / usr/share/pear
  • / usr/share/ph

Alle Versuche, ()/require () -Dinge einzuschließen, werden in diesen Verzeichnissen in dieser Reihenfolge angezeigt.

Es zeigt Ihnen, dass in der Fehlermeldung angegeben ist, wo die gewünschte Datei NICHT gefunden werden konnte ().

Wenn das in deiner index.php enthalten ist, brauchst du für deine erste Anforderung nicht das dir-Zeug, mache einfach:

require_once ( 'db/config.php');
11
Uberfuzzy

Lösung für das Problem

wie von Uberfuzzy erwähnt

Wenn Sie sich die PHP= Konstante [PATH_SEPARATOR] [1] ansehen, werden Sie sehen, dass es für Sie ":" ist.

Wenn Sie die Zeichenfolge ".:/Usr/share/pear:/usr/share/php" mit diesem Zeichen aufteilen, erhalten Sie 3 Teile

  • . (dies bedeutet, dass sich das aktuelle Verzeichnis befindet, in dem sich Ihr Code befindet)
  • / usr/share/pear
  • / usr/share/ph

Alle Versuche, ()/require () -Dinge einzuschließen, werden in diesen Verzeichnissen in dieser Reihenfolge angezeigt.

Es zeigt Ihnen, dass in der Fehlermeldung angegeben ist, wo die gewünschte Datei NICHT gefunden werden konnte ().

Das war die Fehlerursache.

Kommt jetzt zur Lösung

  1. Schritt 1 : Finden Sie Ihre php.ini-Datei mit dem Befehl php --ini (In meinem Fall: /etc/php5/cli/php.ini)
  2. Schritt 2 : Finden Sie include_path In vi mit esc und drücken Sie dann /include_path Und dann enter
  3. Schritt 3 : Kommentieren Sie diese Zeile aus, und geben Sie Ihr Serververzeichnis an. Ihr Pfad sollte folgendermaßen aussehen include_path = ".:/usr/share/php:/var/www/<directory>/"
  4. Schritt 4: Starten Sie Apache neu Sudo service Apache2 restart

Das ist es. Ich hoffe es hilft.

8
Abhishek Goel

Ich hatte ein ähnliches Problem. Nur um jemandem mit dem gleichen Problem zu helfen:

Mein Fehler war das Benutzerdateiattribut für die Dateien in/var/www. Nach dem Zurücksetzen auf den Benutzer "www-data" war das Problem behoben.

1
Gaston

Tatsächlich besteht die Lösung darin, die Datei php.ini zu öffnen, die Zeile include_path zu bearbeiten und entweder vollständig in zu ändern

include_path='.:/usr/share/php:/usr/share/pear' 

oder hänge das an

'.:/usr/share/php:/usr/share/pear' 

auf den aktuellen Wert von include_path.

Weitere Informationen finden Sie in: http://pear.php.net/manual/en/installation.checking.php#installation.checking.cli.phpdir

1
Ivan Aranibar

Beim Einfügen der Datei aus dem Stammverzeichnis meines Projekts in codeigniter ist derselbe Fehler aufgetreten. Ich habe diesen Fehler in common.php Meines Projekts verwendet.

<?php include_once base_url().'csrf-magic-master/csrf-magic.php';  ?>

ich habe es in geändert

<?php include_once ('csrf-magic-master/csrf-magic.php');  ?>

Funktioniert jetzt gut.

0
Bugfixer

Das sind nur die Verzeichnisse, die Ihnen zeigen, wo PHP hat nach Ihrer Datei gesucht. Stellen Sie sicher, dass cron1.php Dort vorhanden ist, wo Sie glauben, dass dies der Fall ist. Und stellen Sie sicher, dass Sie wissen, wo dirname(__FILE__) und $_SERVER['DOCUMENT_ROOT'] zeigen, wo Sie es erwarten würden.

Dieser Wert kann in Ihrer php.ini-Datei angepasst werden.

0
castis