Назад | Перейти на главную страницу

Как заставить работать Zend 2 и Nginx?

Я пытаюсь заставить мое приложение Zend2 работать с Nginx вместо Apache.

Я искал решение в WWW, но ничего не нашел относительно Zend 2 и Nginx, все, что я нашел, это старый старый пост о том, как заставить старую структуру zend (1) работать с nginx.

Как и в случае со всем новым приложением zend 2, я попытался указать свою конфигурацию nginx в / projectdir / public, и я попробовал несколько других способов сделать символическую ссылку из / projectdir / public в / usr / share / nginx / www, но это просто выиграло ' т работать.

PHP5FPM установлен и настроен, phpinfo () работает.

Вот как выглядит моя последняя попытка заставить все работать ...

Вот мой / etc / nginx / sites-available / default

server {
    listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /usr/share/nginx/www/;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }

    # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
    #location /RequestDenied {
    #   proxy_pass http://127.0.0.1:8080;    
    #}

    error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/www;
    #}

    #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    # With php5-cgi alone:
    #   fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/evils/projects/zendCodeGit/public$fastcgi_script_name;
        include fastcgi_params;
    }

}

Я уже пытался добавить дополнительное местоположение / public / с правильным корнем, но я думаю, что мне не хватает какой-то работы по настройке или чего-то еще.

Я уже выполнил команду установки php composer.phar.

ОС - Ubuntu 12.04

Редактировать:

Вот последний журнал ошибок

    2013/02/09 14:57:47 [error] 10140#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught exception 'Zend\Uri\Exception\InvalidUriPartException' with message 'Host "_" is not valid or is not accepted by Zend\Uri\Http' in /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Uri/Uri.php:729
Stack trace:
#0 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Http/PhpEnvironment/Request.php(285): Zend\Uri\Uri->setHost('_')
#1 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Http/PhpEnvironment/Request.php(85): Zend\Http\PhpEnvironment\Request->setServer(Object(Zend\Stdlib\Parameters))
#2 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Mvc/Service/RequestFactory.php(38): Zend\Http\PhpEnvironment\Request->__construct()
#3 [internal function]: Zend\Mvc\Service\RequestFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'request', 'Request')
#4 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Serv" while reading response header from upstream, client: 10.211.55.2, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "10.211.55.10"
2013/02/09 14:57:48 [error] 10140#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught exception 'Zend\Uri\Exception\InvalidUriPartException' with message 'Host "_" is not valid or is not accepted by Zend\Uri\Http' in /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Uri/Uri.php:729
Stack trace:
#0 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Http/PhpEnvironment/Request.php(285): Zend\Uri\Uri->setHost('_')
#1 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Http/PhpEnvironment/Request.php(85): Zend\Http\PhpEnvironment\Request->setServer(Object(Zend\Stdlib\Parameters))
#2 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Mvc/Service/RequestFactory.php(38): Zend\Http\PhpEnvironment\Request->__construct()
#3 [internal function]: Zend\Mvc\Service\RequestFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'request', 'Request')
#4 /home/evils/projects/zendCodeGit/vendor/zendframework/zendframework/library/Zend/Serv" while reading response header from upstream, client: 10.211.55.2, server: _, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "10.211.55.10"
PHP message: PHP Fatal error:  Uncaught exception 'Zend\Uri\Exception\InvalidUriPartException' with message 'Host "_" is not valid or is not accepted by Zend\Uri\Http

Зенд не любит ваш server_name:

server_name _;

Измените его на что-нибудь другое, например "localhost".

Более общее решение было бы:

fastcgi_param   SERVER_NAME $host;

Таким образом, SERVER_NAME фактически будет хранить значение заголовка хоста из запроса. Это также полезно, когда у вас определено несколько имен серверов или вы используете подстановочные знаки.