无法启动Zend2骨架应用程序

时间:2013-05-03 22:43:50

标签: php xampp zend-framework2

我在Windows XP上有一个xampp serwer: Apache 2.4.3 PHP 5.4.7

我尝试开始学习Zend2。

我下载了骨架应用:https://github.com/zendframework/ZendSkeletonApplication 并从cmd:

运行
php composer.phar self-update
php composer.phar install

(不是说我必须提供像C:\ xxx \ php.exe这样的完整链接 - 我不知道为什么,我在我的环境变量中有php)。它没问题 - 没有错误。

我将此代码添加到httpd-vhosts.conf:

<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot /zf2-tutorial/public
    SetEnv APPLICATION_ENV "development"
    <Directory /zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

我还将此行添加到C:\ WINDOWS \ system32 \ drivers \ etc \ hosts

127.0.0.1               zf2-tutorial.localhost localhost

当我跑步时

http://zf2-tutorial.localhost 
在浏览器中我得到“Permission denied”

当我尝试

http://localhost/zf2-tutorial/public/ 

我得到很长的php错误

Fatal error: Uncaught exception 'Zend\ServiceManager\Exception\InvalidArgumentException' with message 'Provided abstract factory must be the class name of an abstract factory or an instance of an AbstractFactoryInterface.' in C:\xampp\htdocs\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:302 ...........

因为我得到了“Permission denied”,所以我认为serwer有问题。 我做错了什么? Thx提前。

大家好。我的最终配置:

<VirtualHost *:80>
    ServerName zf2-tutorial.localhost
    DocumentRoot C:/xampp/htdocs/zf2-tutorial/public
    SetEnv APPLICATION_ENV "development"
    <Directory C:/xampp/htdocs/zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

127.0.0.1               zf2-tutorial.localhost

正常工作:http://zf2-tutorial.localhost/

2 个答案:

答案 0 :(得分:2)

您的主机文件不正确。而不是:

127.0.0.1               zf2-tutorial.localhost localhost

删除最后一个“localhost”,这样你就得到了:

127.0.0.1               zf2-tutorial.localhost

编辑: 我刚注意到的另一件事是你的DocumentRoot:这应该是你的文档根目录的完全限定路径:即C:/ www / zf-tutorial / public。请注意,您应该使用正斜杠作为目录分隔符。在目录配置中使用相同的路径以确保允许访问该目录。

答案 1 :(得分:1)

您似乎正在使用Windows,因此您的vhost配置应包含与项目类似的Windows路径。您确定在%PATH%中有php \ bin的有效路径吗?

> echo %PATH%

我在Windows 7上使用XAMPP。 这是我的vhost配置:

<VirtualHost *:80>
    ##ServerAdmin postmaster@dummy-host2.localhost
    DocumentRoot "C:/xampp/projects/zf2-tutorial/public"
    ServerName zf2.tutorial
    ##ServerAlias www.dummy-host2.localhost
    SetEnv APPLICATION_ENV "development"
    <Directory C:/xampp/projects/zf2-tutorial/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
    ErrorLog "logs/zf2.tutorial-error.log"
    CustomLog "logs/zf2.tutorial-access.log" combined
</VirtualHost>

这个是必不可少的(也可能在你的情况下):

    <Directory C:/xampp/projects/zf2-tutorial/public>
        # ...
        Require all granted
    </Directory>