Zend Framework

DarkAngel7866

New Member
Hallo, ich habe hier probleme die Zend Framework 1.10.5 auf meinem Linux Server zum laufen zu bekommen. Der Server läuft mit open Suse-Linux 11 und Plask 9.2 und so weit ist auch alles bestens. Meine Scripte aufen auch tadellos nur wollte ich nun für ein paar neue Scripe die Zend Framework installieren und stolpere permanent über Probleme. Angeblich, so die beschreibung, ist es ja ganz einfach zu installieren.
-Hole die zip oder tar.gz von der Webseite (habe die ZendFramework-1.10.5.tar.gz genommen)
-Extrahire den Inhalt (habe es in /ZendFramework-1.10.5 komplettliegen)
-trage das library verzeichnis in der php.ini ein unter include_path (dort steht nun bei mir : include_path=".:/usr/share/php5:/usr/share/php5/PEAR:/ZendFramework-1.10.5/library")
-Starte den Apache neu damit die geänderte php.ini geladen wird.

So weit so gut, ist ja alles nur ne kleinigkeit. php.info zeigt den path auch richtig an sollte also gehen.

Mache ich mich also ans Testen und trage mal in eine php Datei ein...
require_once 'Pdf.php'; Die Datei liegt in dem Verzeichnis /library/Zend auf das das PHP ja zugreifen können sollte. Doch siehe da er findet die Datei nicht. Also hat php auf mein Verzeichnis keinen Zugriff und ich probiere es mal mit require_once 'Zend/Pdf.php'; weil ja in dem /Library noch das Verzeichnis /Send liegt, Ergebnis das selbe.

Nächster Versuch, ich kopiere die /library ins /usr/share/php5 denn arauf sollte das PHP ja auch zugreifen können und die PEAR findet er ja auch... Ergebnis ist wieder das Selbe.

So fuhr ich mit mit verschiedenen Verzeichnissen fort immer das selbe Ergebnis. Gefunden hat er die Datei nur wenn ich die /library im /httpdocs stehen hatte, wobei er dann die nächsten Dateien nicht findet. Die Rechte an den Verzeichnissen waren übrigens immer frei so das der Zugriff auch hätte erfolgen könnte.

Da man nach langem probieren ja gern an sich selber zweifelt, sagte ich mir dann hole dir mal das /tests Verzeichnis ins /httpdocs und starte mal die AllTests.php. Diese läd als estes die TestHelper.php und diese wiederum die Framework.php. Bruch wieder Datei nicht gefunden, denn eine Framework.php ist in dem gesamten Paket überhaupt nicht vorhanden.

Nun frage ich mich, ob das geladene Paket von Zend überhaupt vollständig ist und wo ich noch ansetzen kann. Vielleicht kann mir ja jemand von Euch helfen, würde mich sehr freuen.

DA
 
Last edited by a moderator:
Ganz grob gesagt: Lese Dich erstmal richtig ins Zend Framework ein!

Es ist nämlich keine Library-Sammlung aus der man einfach mal das ein oder andere Script nutzten kann.
Das ZF braucht seine gewohnte Application-Umgebung. Die kann man entweder per Hand stricken oder nutzt das mitgelieferte bin/zf.sh um sich eine Umgebung vom ZF bauen zu lassen.
Start: http://framework.zend.com/manual/en/learning.quickstart.create-project.html
Oder als Buch: http://www.zendframeworkbuch.de/
Letzteres wurde aber für ZF 1.7 geschrieben. Mit 1.8 kam bereits kleine Änderungen in der bootstrap hinzu, etc. Diese kleineren Änderungen muss man dann woanders nachlesen. Aber insgesamt ein gutes Buch zum Lernen und Begreifen was ZF ist und was man damit machen kann.

Des weiteren habe ich das Gefühl, dass Du beim ganzen Auspacken vergessen hast die richtigen Benutzerrechte zu setzten. Also nicht nur chmod sondern auch chown.
In einer zentral installierten Instanz sollte dies wwwrun|www-data sein.
Wobei ich von der zentralen Installation gerade beim ZF abraten würde. Aber das ist Geschmackssache.

huschi.
 
Danke @ Huschi für Deine Antwort.

Schon möglich das ich mich erst mal mit der ZF auseinander setzen sollte, nur bin ich immer der Mensch der beim machen lernt und leider ergab die zf.sh nix weiter als eine zwei Bildschirme füllende Fehlermeldung.

Die Dateirechte sind für den Test, ob es überhaut geht, auf 777. Also kann auch das PHP auf die ZF zugreifen. Die Rechte auf 777 setzen ist Mist, weiß ich auch, kann dies aber tun weil der Server im moment nicht online ist. Habe den Server erst 3 Tage und bin halt beim einrichten und Testen. Für meine Webauftritte hab ich ja noch andere Server. Wenn alles so läuft wie gewünscht und meine Server-Sicherheit seinen Senf dazu gegeben hat, geht der Server erst ich den Serverpark.

Aber vielleicht mal zum Grundverständnis, ich möchte erst mal wissen wie das nun instaliet werden muß. Der Server ist für einen Kunden bestimmt der das ZF gern haben möchte. Es werden nur zwei Webauftritte von dem Server laufen die beide ZF benötigen. Daher soll das ganze global zur Verfühgung stehen. Nebenbei werde ich ein paar Probeprojekte von dem Server mit der ZF laufen lassen. Ich bin kein Servereinrichter sondern eher PHP Perl und Jawa Programmierer und habe das Problem im Moment am Hacken hängen weil mein Servereinrichter nicht da ist und erst in ein paar Wochen wieder kommt. Bis dahin sollte der Server aber längst im Park sein. Daher muß ich mich im Moment mit vielen Dingen besachäftigen von denen ich nur wenig Ahnung habe und mir rennt die Zeit davon, die mir dadurch für Andere Aufgaben fehlt. Ich werde mich also mit der ZF erst später beschäftigen können.

Also danke für Eure Hilfe schon einmal im Voraus

DA
 
Last edited by a moderator:
Lass dir den Include-Path einmal direkt in der Datei ausgeben in der du versuchst, eine ZF-Komponente einzubinden:

PHP:
echo get_include_path();

Das Ergebnis dann einfach hier posten.
 
Der Server ist für einen Kunden bestimmt der das ZF gern haben möchte. Es werden nur zwei Webauftritte von dem Server laufen die beide ZF benötigen. Daher soll das ganze global zur Verfühgung stehen.
Dann installiere es halt an zentraler Stelle. Die Funktionalität kannst Du dennoch nur innerhalb eines ZF-Application-Struktur testen.
Ich nehme gerne entweder das Pear-Verzeichnis oder /var|srv/www/ für solche zentralen Installationen, setzt die Rechte für www-data:www-data (Suse: wwwrun:wwwrun) mit 644 (Dateien) und 755 für Verzeichnisse drauf.

Dem Kunde kannst Du dann das .../Zend/-Verzeichnis in seine Application-Umgebung unter Library per Softlink einlinken. (Achtung: Webuser setzten!)
Im Apache natürlich FollowSymlink aktivieren (versteht sich von selbst).

huschi.
 
Als erstes mal danke für Eure Antworten. Da ich von Linux nur wenig Ahnung habe, habe ich mal alles wie folgt abgearbeitet, in der Hoffnung das alles richtig ist:

Die Zend liegt nun unter

/usr/share/php5/PEAR/Zend mit allen Verzeichnissen von bin über library bis tests

echo get_include_path(); ergibt genau was ich in der php.ini angegeben habe
.:/usr/share/php5:/usr/share/php5/PEAR

Alle Datein und Verzeichnisse gehören "wwwrun" und Gruppe "www"
Rechte: Verzeichnisse 755 und Dateien 644.

Das Verzeichnis /usr/share/php5/PEAR/Zend ist als Symlink im /srv/www/vhosts/domain.de/httpdocs eingetragen.

FollowSymlink ist und war in der /etc/apache2/vhosts.d/vhost.template eingetragen. (da habe ich lange nach suchen müssen)

Wenn ich es nun noch testen könnte, wäre ich mit dem Thema durch und könnte mich wieder an meine eigentlichen Aufgaben machen. Wenn Ihr also so lieb wärt, mir zu sagen wie ich es Testen kann, wäre ich happy.

Tut mir leid, wenn ich vielleicht ein wenig Dämlich rüber komme, aber Server einrichten ist nun wirklich nicht meine Aufgabe hier. Linux ist nicht meine Muttersprache und PHP ist für mich sonst einen fertige Umgebung die ich nutze und nicht einrichte. Sonst ist es eher so das ich meinem Techiker sage welche PHP-Umgebung ich benötige. Gut wie ich ein paar Einträge in der php.ini mache is klar, leider hört es dann aber auch auf. Schon interessant das auf dem Server hier fünf php.ini sind und das die httpd.conf nur noch mit dem includen weiterer . conf beschäftigt ist, das kenne ich halt noch etwas anders. Was ich damit sagen will, ich muß mich hier leider auch erst mal ganz neu zurecht finden. Alles zusammen lernt man leider nicht in ein paar Minuten. Der letzt Apache den ich eingerichtet habe ist eben auch schon ein paar Jahre her.

Noch mals danke für Eure Hilfe

DA
 
Last edited by a moderator:
Das Verzeichnis /usr/share/php5/PEAR/Zend ist als Symlink im /srv/www/vhosts/domain.de/httpdocs eingetragen.
Das hilft Deinem Kunden nur nichts.
Der braucht den richtigen Symlink in seiner Application-Umgebung. Konkret:
ln -s /usr/share/php5/PEAR/Zend/libraries/Zend .../httpdocs/library/.

Da Du Dich nicht mit dem ZF auskennst, würde ich sagen Du solltest hier mehr mit Deinem Kunden kommunizieren. Denn er wird sich wohl gut genug damit auskennen um Dir sagen zu können wo und wie er es gerne hätte.

huschi.
 
Da Du Dich nicht mit dem ZF auskennst, würde ich sagen Du solltest hier mehr mit Deinem Kunden kommunizieren. Denn er wird sich wohl gut genug damit auskennen um Dir sagen zu können wo und wie er es gerne hätte.

huschi.

Ja das hatte ich auch gedacht, leider ist dem nicht so. Wenn das alles so schwierig ist, frage ich mich allerdings auch wie die das auf die Reihe bekommen wollen. Ich denke aber die haben schon ihren fertigen Code und glauben das nur noch auf den Server spielen zu müssen. Den Link habe ich geändert und nun fehlt mir nur noch ein kleines Skrikt zum testen.

DA
 
Back
Top