• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Probleme beim Upload von Zend-Framework 3 Projekt bei Webhoster

chicorelli

New member
Hallo Zend-User,

ich habe derzeit ein Problem, welches ich mir nicht erklären kann. Habe eine Seite mittels Zend-Framework 3 MVC erstellt. (Basis ist Skeleton-Applikation). Mit meinem lokalen Webserver XAMPP (inkl. virtueller Host) läuft es auch wunderbar. Nun wollte ich es auf einem Webhoster (hier Strato) testen.

Dabei habe ich die kompletten Files 1:1 hochgeladen. Ich habe festgestellt, dass ich lediglich eine weiße leere Seite zu Gesicht bekomme. Daraufhin habe ich begonnen zu ermitteln, an welcher Stelle im Code es scheitert.

In der Datai autoload.php (/composer) wird die statische Funktion

PHP:
ComposerAutoloaderInit66e06c3bfe03e245c40b6b51695fecfb::getLoader()
aufgerufen.

Hier wird die Schleife

PHP:
foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire66e06c3bfe03e245c40b6b51695fecfb($fileIdentifier, $file);
durchlaufen.

Dabei habe ich festgestellt, dass 3 Datein required werden (beim lokalen Webserver).

PHP:
C:\xampp\htdocs\Web\vendor\composer/../paragonie/random_compat/lib/random.php
C:\xampp\htdocs\Web\vendor\composer/../zendframework/zend-form/autoload/formElementManagerPolyfill.php
C:\xampp\htdocs\Web\vendor\composer/../ezyang/htmlpurifier/library/HTMLPurifier.composer.php
Beim Ausführen auf dem Host fällt auf, dass die Datei formElementManagerPolyfill.php per require schief läuft. Es kommt zwar keine Fehlermeldung aber diese scheint problematisch zu sein.

Nun bin ich etwas ratlos. Könnte mir vorstellen, dass ich die Rewrite-Rules anpassen muss. Allerdings sollte es dann ja bereits bei der ersten Datei "random.php" auch zu Problemen führen!?

Ich möchte noch erwähnen, dass ich hier auf dem Hoster mit einer Umleitung arbeite (Hauptverzeichnis -> Web -> Public). Web entspricht quasi meinem Zend-Framework Projekt.
Habe also eine Umleitung auf den "public" Ordner erstellt und die htaccess Datei in das Public Verzeichnis gelegt. Die htaccess Datei entspricht einem Beispielprojekt aus dem Buch Zend-Framework 3.

PHP:
RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting or installed the project in a subdirectory,
# the base path will be prepended to allow proper resolution of
# the index.php file; it will work in non-aliased environments
# as well, providing a safe, one-size fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}/index.php [L]
Danke für Tipps!
 

chicorelli

New member
Das Logfile sagt folgendes aus.

[client 93.237.25.0] PHP Fatal error: Interface 'Psr\\Container\\ContainerInterface' not found in /mnt/web113/a2/45/xx/htdocs/Web/vendor/zendframework/zend-servicemanager/src/ServiceLocatorInterface.php on line 17
[client 93.237.25.0] PHP Fatal error: Interface 'Psr\\Container\\ContainerInterface' not found in /mnt/web113/a2/45/xx/htdocs/Web/vendor/zendframework/zend-servicemanager/src/ServiceLocatorInterface.php on line 17
[client 93.237.25.0] PHP Fatal error: Interface 'Psr\\Container\\ContainerInterface' not found in /mnt/web113/a2/45/xx/htdocs/Web/vendor/zendframework/zend-servicemanager/src/ServiceLocatorInterface.php on line 17
Habe aber mittels phpinfo() gesehen, dass Strato die intl-Extension nicht unterstützt. Diese ist ja zwingend erforderlich.

Könnte mir vorstellen, dass hier das Problem liegt. Muss ich mich bei Strato erkundigen, ob die Erweiterung aktivierbar ist.
 

Kaiuwe

Super-Moderator
…dass Strato die intl-Extension nicht unterstützt. Diese ist ja zwingend erforderlich.
Nein, die „intl“-Erweiterung ist keine zwingende Voraussetzung. Nur bestimmte Komponenten oder Klassen benötigen diese PHP-Erweiterung.

Zum Beispiel:

- zend-i18n („IsInt“- und „Float“-Validator, „CurrenyFormat“-, „DateFormat“ und „Plural“-ViewHelper, „Translator“ usw.)
- „Zend\Form\Element\FormMonthSelect“

Könnte mir vorstellen, dass hier das Problem liegt.
Die Log-Einträge sagen etwas völlig anderes! Lade mal deine „composer.json“ auf den Server und dann führe per SSH die Installation aus. Composer installiert dir dann alle benötigen Pakete und auch das „PSR-ContainerInterface“.

Muss ich mich bei Strato erkundigen, ob die Erweiterung aktivierbar ist.
Wenn du nur ein Hosting-Paket hast und keinen eigenen Server, dann unternimmt Strato (in der Regel) überhaupt nichts. (Siehe auch: „Mit welchen Modulen steht PHP bei STRATO zur Verfügung?“)
 

chicorelli

New member
Vielen Dank für die Analyse.

Die zend-i18n Komponente nutze ich, von daher möchte ich auf die intl-Erweiterung nicht verzichten.

Ich gebe zu ich habe gehofft lediglich durch das Hochladen der Dateien (inkl. vendor-Verzeichnis) das Framework mit einem Hosting-Paket zum Laufen zu bekommen, ohne Installation über composer. Auf SSH bzw. composer habe ich hier bei einem Hosting-Paket mit großer Wahrscheinlichkeit keinen Zugriff. Auch das Erstellen von virtuellen Hosts ist denke ich nicht möglich.

Das Hosting-Paket habe ich noch von meiner "konventionellen" PHP-Programmierung (ohne Framework).

Nun muss ich wohl schon auf einen Server upgraden um mit dem Framework arbeiten zu können?
 

Kaiuwe

Super-Moderator
Die zend-i18n Komponente nutze ich, von daher möchte ich auf die intl-Erweiterung nicht verzichten.
Gute Entscheidung! :D

Ich gebe zu ich habe gehofft lediglich durch das Hochladen der Dateien (inkl. vendor-Verzeichnis) das Framework mit einem Hosting-Paket zum Laufen zu bekommen, ohne Installation über composer.
Du kannst einfach den „vendor“-Ordner hochladen und dann funktioniert es ebenfalls. Achte nur darauf, dass du nirgendwo absolute Pfade verwendest. Läuft es lokal, dann sollte auch das „PSR-ContainerInterface“ vorhanden sein.

Auf SSH bzw. composer habe ich hier bei einem Hosting-Paket mit großer Wahrscheinlichkeit keinen Zugriff.
SSH-Zugriff hast du bereits ab dem Paket „PowerWeb Starter“. (Welches Paket hast du?)

Auch das Erstellen von virtuellen Hosts ist denke ich nicht möglich.
Brauchst du nicht. Ist auch lokal nicht notwendig.

Das Hosting-Paket habe ich noch von meiner "konventionellen" PHP-Programmierung (ohne Framework).
Ein Framework ist auch nur normales PHP und stellt keine weiteren Voraussetzungen an das Hosting-Paket oder Server. Dort wo Wordpress & Co. läuft, da läuft auch ein Framework wie das ZF.

Nun muss ich wohl schon auf einen Server upgraden um mit dem Framework arbeiten zu können?
Nein! Nochmal: Symfony, ZF und wie sie alle heißen benötigen keinen Server oder irgendwelche speziellen Server-Konfigurationen. Es sind alles einfache PHP-Skripte. Composer und die mitgelieferten Kommandozeilen-Tools vereinfachen nur die Handhabung.

Du hast nur ein Problem: Strato unterstützt nicht die „intl“-Erweiterung. Du kannst nochmals nachfragen, ansonsten wechsle den Anbieter. Ein Hosting-Paket genügt.
 

chicorelli

New member
Dann wird wohl Strato als Anbieter für mich entfallen. Habe das PowerWeb Basic Paket. Ich habe noch eine Synology-Diskstation, aufdem ein Webserver eingerichtet werden kann (PHP7 & Intl-Erweiterung). Da werde ich es jetzt probieren, das Projekt einzurichten.
 

Kaiuwe

Super-Moderator
Habe das PowerWeb Basic Paket.
Dann investiere die 8 Euro bei einem anderen Hoster.

Ich habe noch eine Synology-Diskstation, aufdem ein Webserver eingerichtet werden kann (PHP7 & Intl-Erweiterung).
Kann dir leider nicht ganz folgen. Ich gehe davon aus, dass du bereits einen lokalen Webserver bei dir laufen hast, warum jetzt noch einen Webserver verwenden, welcher ebenfalls nur lokal erreichbar ist?

Ist es eventuell eine Option zend-i18n am Anfang auszuklammern? So kannst du Strato jetzt verwenden und in Ruhe einen neuen Webhoster suchen.
 

chicorelli

New member
Lokal habe ich einen Webserver (XAMPP). Nun wollte ich die Website auch im Netz zur Verfügung stellen (auch nur zum Test und Vorzeigen für Dritte). Daher wollte ich auch Strato hernehmen. Nun habe ich mit mein NAS-Laufwerk mit integriertem Webserver hergenommen um die Seite aus dem Internet abrufbar zu machen. Entsprechend mit dynamischer DNS und Router-Port-Freigabe.
Auf dem NAS - Laufwerk ließ sich das ZF-Projekt auch problemlos einrichten.

Jetzt kann ich mich in Ruhe nach einer Hosting-Alternative umsehen. Das eigene NAS als Hoster zu nehmen halte ich auf Dauer für nicht geeignet. NAS-Laufwerk muss erst hochfahren bei Aufruf (dauert 5sec), Sicherheit etc...

Danke für die Hilfe!
 
Oben