ZEND Grundlagen?

Du musst den VHOST auf public zeigen lassen. Wenn das der Fall ist, genügt

http://zend-test/netbull

Wegen PHPUnit, wie sieht deine composer.json aus? Hast composer update --dev probiert? Bei neueren Versionen von composer ist das nicht mehr notwendig, bei älteren schon. composer self-update aktualisiert composer.phar selbst.
 
Du musst den VHOST auf public zeigen lassen. Wenn das der Fall ist, genügt

http://zend-test/netbull

Nö.. Hab ich gemacht.. Er lädt kein
http://zend-test/netbull
http://zend-test/ geht natürlich.

Woher weis ZEND das in public was mit netbull zu finden sein soll?
Code:
usr@zend-test:~$ ls -la /var/www/zend-test/project1/public/
insgesamt 20
drwxrwx--- 1 root vboxsf 4096 Mär  9 15:28 .
drwxrwx--- 1 root vboxsf 4096 Mär  9 15:28 ..
-rwxrwx--- 1 root vboxsf  712 Mär  9 15:08 .htaccess
-rwxrwx--- 1 root vboxsf  779 Mär  9 15:28 index.php
-rwxrwx--- 1 root vboxsf  753 Mär  9 15:08 index.php~
 
Wegen PHPUnit, wie sieht deine composer.json aus? Hast composer update --dev probiert? Bei neueren Versionen von composer ist das nicht mehr notwendig, bei älteren schon. composer self-update aktualisiert composer.phar selbst.

Code:
usr@zend-test:/var/www/zend-test/project1$ composer update --dev
You are using the deprecated option "dev". Dev packages are installed by default now.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
usr@zend-test:/var/www/zend-test/project1$
 
Nö.. Hab ich gemacht.. Er lädt kein
http://zend-test/netbull
http://zend-test/ geht natürlich.

Woher weis ZEND das in public was mit netbull zu finden sein soll?

Die .htaccess leidet alle Aufrufe an index.php. In der wird die ZF-Applikation initialisiert (Bootstrapping) und dann irgendwann im Ablauf der Router abgearbeitet. In dem sollte auf die application/controllers/NetbullController.php geleitet werden. Wenn das nicht passiert, ist es sehr wahrscheinlich, dass bei dir mod_rewrite nicht aktiv ist.

Code:
usr@zend-test:/var/www/zend-test/project1$ composer update --dev
You are using the deprecated option "dev". Dev packages are installed by default now.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
usr@zend-test:/var/www/zend-test/project1$

Ok, was hast du in der composer.json bei "require" und "require-dev" drin stehen? Hast du einen Unterordner in vendor mit dem Namen phpunit?
 
Moin Saftmester...

Die .htaccess leidet alle Aufrufe an index.php. In der wird die ZF-Applikation initialisiert (Bootstrapping) und dann irgendwann im Ablauf der Router abgearbeitet. In dem sollte auf die application/controllers/NetbullController.php geleitet werden. Wenn das nicht passiert, ist es sehr wahrscheinlich, dass bei dir mod_rewrite nicht aktiv ist.
Mein Mod-Rewrite ist an:
Code:
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 ^.*$ - [NC,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, 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 ^(/.+)(.+)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

Ok, was hast du in der composer.json bei "require" und "require-dev" drin stehen? Hast du einen Unterordner in vendor mit dem Namen phpunit?
Und so sieht meine omposer.json aus:
Code:
{
  "name": "usr/zf1-test",
  "description": "Zend Framework 1 Test Projekt",
  "type": "project",
  "keywords": [
  "framework",
  "zf1"
  ],
   "require": {
     "zendframework/zendframework1": "1.12.11"
   },
       "require-dev": {
     "phpunit/phpunit": "4.5.0",
     "phpunit/dbunit": "1.3.1"
   }
}

Und hier siehst mein Vendor Verzeichnis....
2015-03-12-083655_1920x1048_scrot.png

LG NetBu||
 
Ah, ok. Die Controller müssen immer Controller im Datei- und Klassennamen haben. Mit

"zf.sh create controller Netbull"

sollte der Controller richtig angelegt und konfiguriert werden.

Bash:
$ ./vendor/zendframework/zendframework1/bin/zf.sh create controller Netbull2
Note: PHPUnit is required in order to generate controller test stubs.
Creating a controller at D:\web\zend-test/application/controllers/Netbull2Controller.php
Creating an index action method in controller Netbull2
Creating a view script for the index action method at D:\web\zend-test/application/views/scripts/netbull2/index.phtml
Updating project profile 'D:\web\zend-test/.zfproject.xml'

$ ls application/controllers/
ErrorController.php  IndexController.php  Netbull2Controller.php  NetbullController.php

Auch ich habe das Problem, dass phpunit nicht gefunden wird. Dafür habe ich nur die Erklärung, dass zf.sh die vendor/autoload.php nicht einbindet und daher auch die phpunit-Klassen nicht finden kann. Erste Tests mit auto_prepend_file in der php.ini haben noch nicht weitergeholfen.

EDIT: Hier habe ich gelesen, dass das phpunit im $PATH gesucht wird: http://stackoverflow.com/questions/9449503/zf-create-controller-not-creating-phpunit-tests

Das liegt in ./vendor/bin
 
Zuletzt bearbeitet:
OKI hab ich so gemacht....:

Code:
usr@zend-test:/var/www/zend-test/project1$ ./vendor/zendframework/zendframework1/bin/zf.sh create controller Netbull3
Note: PHPUnit is required in order to generate controller test stubs.
Creating a controller at /media/sf_share/web/project1/application/controllers/Netbull3Controller.php
Creating an index action method in controller Netbull3
Creating a view script for the index action method at /media/sf_share/web/project1/application/views/scripts/netbull3/index.phtml
Updating project profile '/media/sf_share/web/project1/.zfproject.xml'

usr@zend-test:/var/www/zend-test/project1$ ls application/controllers/
ErrorController.php  IndexController.php  MineController.php  Netbull2Controller.php  Netbull3Controller.php  Netbull.php
usr@zend-test:/var/www/zend-test/project1$

Aber es geht weder
http://zend-test/netbull3
noch
http://zend-test/Netbull3

So sieht meine htaccess aus:

Code:
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 ^.*$ - [NC,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, 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 ^(/.+)(.+)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

Für php unit müsste ich das in meinen system path eintragen?
Wenn ich mehrere Projekte habe dann wird das aber kompliziert.
 
Das hier sieht ungewöhnlich aus:

Code:
Creating a controller at /media/sf_share/web/project1/application/controllers/Netbull3Controller.php

Arbeitest du mit einem symbolischen Link auf das Verzeichnis project1? Steht irgendwas relevantes in der error.log deines Apachen? Könnten es evtl. Zugriffsrechte sein? Ist das ein Apache der mit suexec konfiguriert ist? Am besten du wirfst mal einen Blick ins error.log, dann siehst du vielleicht das Problem.
 
Moin,

ja ich habe einen symbolischen Link in /var/www/zend-test/ auf /media/sf_share/web gelegt. Nur so komme ich an das shared Verzeichnis der Virtuellen Maschine.
So kann ich auf meinem Rechner mit phpStorm auf die Sourcen zugreifen die auf der Virtuellen Maschine liegen.

Aus dem Error Log von heute (Hab eben noch einmal ein neues ZEND Projekt aufgesetzt)
Code:
[Mon Mar 16 08:19:38.004067 2015] [mpm_prefork:notice] [pid 1233] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4 configured -- resuming normal operations
[Mon Mar 16 08:19:38.004891 2015] [core:notice] [pid 1233] AH00094: Command line: '/usr/sbin/apache2'
Gleicher Effekt: Index geht, meine weiteren Controller nicht. Ausserdem legt es den Ordner tests an, sagt aber das PHP unit nicht gefunden wird.

Ist das ein Apache der mit suexec konfiguriert ist?
Keine Ahnung was mit suexec gemeint ist. Kann ich das testen?

LG NetBu||
 
Wenn es ein Fehler mit suexec wäre, hätte man was im error.log sehen müssen. Das was du beschreibst kommt mir etwas komisch vor. Mittlerweile habe ich den Eindruck, das die Änderungen an Dateien aus dem Host nicht in den Guest propagiert werden. Hast du die Möglichkeit, innerhalb der VM mal die Änderungen nachzuvollziehen? Existiert in der VM ein Controller mit dem Namen NetbullController?

Ich denke mittlerweile, dass der Einsatz einer VM das Problem verursacht. Probier das doch mal direkt auf dem Host (ohne Guest-VM) aus.
 

Neue Beiträge

Zurück