PEAR in Webprojekt integrieren.
TomIRL
- php
Hallo liebe Forumsgemeinde,
Ich habe für ein paar kleinere Programmierungen einige PEAR Klassen verwendet. Lokal auch kein Problem alles schön installiert ging auch so weit.
Nun sollte diese Projekt auf einem Server zum Einsatz kommen, der kein PEAR installiert hat. Ich habe keine ROOT, und der Provider hat PEAR erst in einem höheren Paket im Einsatz.
Nun dachte ich mir es sollte ja auch kein Problem sein PEAR in das Projekt einzubinden, habe ich schon mehrfach gesehen.
Also PEAR runtergeladen und auf die Platte gemacht.
Fogendes zu meinen Skripten hinzugefügt:
ini_set('include_path', '/blablablub/pear')
Dies habe ich sowohl absolut also mit vollständigen Serverpfad als auch relativ probiert. Ergebnis ist kann die üblichen
require_once 'config/config2 nur noch in jenem Includ Verzeichnis ausführen, außerdem scheint verschiedenes anderes nicht zu funktionieren, wobei ich die Fehler der Reihe beheben möchte.
Hat jemand einen Tip für mich wie man so etwas lösen kann?
Habe ich etwas übersehen?
TomIRL
hi,
Fogendes zu meinen Skripten hinzugefügt:
ini_set('include_path', '/blablablub/pear')
Du hast jetzt also den include-Pfad auf genau ein Verzeichnis gesetzt; ggf. vorher vorhandene weitere Pfade hast du damit überschrieben.
Ergebnis ist kann die üblichen require_once 'config/config2 nur noch in jenem Includ Verzeichnis ausführen
Natürlich, du hast den Pfad ja ... siehe oben.
Hat jemand einen Tip für mich wie man so etwas lösen kann?
Vielleicht mal den include_path nicht überschreiben, sondern erweitern?
(Dazu bspw. vorher mit ini_get() aktuelle Einstellung auslesen, und mit ini_set() diesen Wert plus deine Erweiterung für's PEAR-Verzeichnis neu setzen. Oder das ganze, sofern möglich, gleich per .htaccess machen.)
gruß,
wahsaga
Vielleicht mal den include_path nicht überschreiben, sondern erweitern?
(Dazu bspw. vorher mit ini_get() aktuelle Einstellung auslesen, und mit ini_set() diesen Wert plus deine Erweiterung für's PEAR-Verzeichnis neu setzen. Oder das ganze, sofern möglich, gleich per .htaccess machen.)
Ahja der Mechanismus mit dem überschreiben war mir nicht ganz klar.
PEAR schlägt folgendes vor, funktioniert aber bei mir nicht, wobei ich nicht weis was mit PATH_SEPARATOR gemeint ist.
<?php
ini_set('include_path', '~/pear/lib' . PATH_SEPARATOR . ini_get('include_path'));
?>
TomIRL
Moin,
Außerdem, Ich finde die ganze Seite nicht mit den Konfigurationsmöglichkeiten über ini_set () bzw. was nur über die php.ini einzustellen geht bzw. was über.htaccess geht oder über die Skripte selbst.
TomIRL
hi,
Außerdem, Ich finde die ganze Seite nicht mit den Konfigurationsmöglichkeiten über ini_set () bzw. was nur über die php.ini einzustellen geht bzw. was über.htaccess geht oder über die Skripte selbst.
Auf der Seite, die ich dir bereits verlinkt hatte, der obere Punkt im Menü oben links: List of php.ini directives
gruß,
wahsaga
echo $begrüßung;
PEAR schlägt folgendes vor, funktioniert aber bei mir nicht, wobei ich nicht weis was mit PATH_SEPARATOR gemeint ist.
PATH_SEPARATOR ist eine Konstante, die je nach System auf dem das Script läuft, den entsprechenden Separator für die einzelnen Path-Elemente enthält. Also : für Unix, ; für Windows, etc.
ini_set('include_path', '~/pear/lib' . PATH_SEPARATOR . ini_get('include_path'));
~ ist typischerweise die Unix-Abkürzung für das Home-Verzeichnis. Wenn dein Script unter der Kennung apache ausgeführt wird, so wird der sicherlich ein anderes Home-Verzeichnis haben als der User dem der Webspace gehört, sprich: du.
Die Verzeichnisangaben müssen entweder absolut ( ~/... zählt dazu) oder relativ zum gestarteten Script angegeben werden.
echo "$verabschiedung $name";
Hi,
PATH_SEPARATOR ist eine Konstante, die ...
... IIRC erst ab Version 4.3 existiert. Bei systemunabhängigen Scripts sollte man sie also vorher ggf. selbst definieren!
DIRECTORY_SEPARATOR gibt's hingegen schon ein wenig länger (4.0.irgendwas).
Gruß, Cy-"mein ältestes Produktiv-PHP ist die 4.1.2"-baer
echo $begrüßung;
PATH_SEPARATOR ist eine Konstante, die ...
... IIRC erst ab Version 4.3 existiert.
Ja, anscheinend ist das so. PHP 4.2.3 kennt diese Konstante noch nicht. Und die deutsche Version der Handbuchseite kennt sie auch noch nicht.
echo "$verabschiedung $name";
hi,
PEAR schlägt folgendes vor,
ini_set('include_path', '~/pear/lib' . PATH_SEPARATOR . ini_get('include_path'));
funktioniert aber bei mir nicht,
D.h.?
Was zeigt ini_get() für den include_path anschließend an?
wobei ich nicht weis was mit PATH_SEPARATOR gemeint ist.
Bei der von mir bereits verlinkten Beschreibung zu include_path steht doch, dass das Trennzeichen für mehrere Pfade je nach Betriebssystem unterschiedlich ist - Unixe benutzen den Doppelpunkt, Windowsen das Semikolon.
Und die von PHP dafür bereitgestellte Konstante PATH_SEPARATOR wird bei der Beschreibung von set_include_path() erwähnt (und war dort über die seiteninterne Suchfunktion auch leicht ausfindig zu machen). Dort steht übrigens ein Beispielcode ganz ähnlich zu deinem oben genannten.
gruß,
wahsaga
Hallo Tom,
ini_set('include_path', '/blablablub/pear')
Ich verwende immer:
ini_set('include_path', dirname(__FILE__).'/include/pear'.PATH_SEPARATOR.ini_get('include_path'));
PEAR würde hier im Unterverzeichnis include/pear liegen. dirname(__FILE__) liefert den Namen des Verzeichnisses der aktuellen Datei (absolut) - d.h. wenn /var/www/tomirl/htdocs/index.php aufgerufen wird, so enthält dirname(__FILE__) den Wert '/var/www/tomirl/htdocs'.
Wenn Du es *ganz* korrekt machen willst, kannst Du übrigens:
ini_set('include_path', dirname(__FILE__).str_replace('/', DIRECTORY_SEPARATOR, '/include/pear').PATH_SEPARATOR.ini_get('include_path'));
machen. ;-) Funktioniert allerdings auch ohne diese Modifikation.
Viele Grüße,
Christian
Zunächst mal vielen Dank,
Ich habe das Problem lösen können!
Christians lösung funktionierte auf Anhieb auf einem Server mit PHP5. Das ursprüngliche Problem lag tatsächlich in einer antiken Version von PHP4 wie von Cybaer beschrieben.
Dann gab es bei meiner Version noch Probleme mit den Pfadangaben.
Außerdem habe ich viel gelesen und viel gelernt.:-)
Danke TomIRL
Hi,
antiken Version von PHP4 wie von Cybaer beschrieben.
Hmm, meine Anmerkung war eigentlich ganz allgemein gedacht. =:-)
Ich hätte dich direkt drauf hingewiesen, wenn Du gleich angegeben hättest, mit welcher PHP-Version Du es zu tun hast.
Außerdem habe ich viel gelesen und viel gelernt.:-)
Gleich die PHP-Version anzugeben hoffentlich auch! ;-)
Gruß, Cybaer
Hi,
antiken Version von PHP4 wie von Cybaer beschrieben.
Hmm, meine Anmerkung war eigentlich ganz allgemein gedacht. =:-)
Ich hätte dich direkt drauf hingewiesen, wenn Du gleich angegeben hättest, mit welcher PHP-Version Du es zu tun hast.
Außerdem habe ich viel gelesen und viel gelernt.:-)
Gleich die PHP-Version anzugeben hoffentlich auch! ;-)
Das ist relativ unerheblich.
Ich habe da eine ganze Reihe von Konfigrationen zur Auswahl.
Wenn es irgenwo nicht läuft, dann komme ich von alleine mit der Version, bzw. mit dem Manual zurecht.
Aber bei mir lief es anfänglich nirgendwo.
Was mit og 2. Urachen zu tun hatte. :-)
Tom