2017-05-26 4 views
1

Ich habe versucht, Symfony2 auf einem Shared-Hosting-Server bereitzustellen, aber ich bekomme 500 response.bekommen 500 Antwort nach der Bereitstellung von Symfony2

Alle Dateien unter web/ Verzeichnis wurden in das Verzeichnis public_html gestellt.

Die anderen Verzeichnisse [app, bin, src und vendor] wurden auf eine Ebene höher gelegt.

Meine Verzeichnisstruktur wie folgt aussehen:

| -- /app 
| -- /bin 
| -- /src 
| -- /vendor 
| -- /public_html 

ich den Cache manuell löschen tat, bevor die Datei auf den Server hochzuladen.

app.php

<?php 

use Symfony\Component\HttpFoundation\Request; 
use Sonata\PageBundle\Request\RequestFactory; 
/** @var \Composer\Autoload\ClassLoader $loader */ 
$loader = require __DIR__.'/../app/autoload.php'; 
include_once __DIR__.'/../app/bootstrap.php.cache'; 

$kernel = new AppKernel('prod', false); 
$kernel->loadClassCache(); 
//$kernel = new AppCache($kernel); 

// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter 
//Request::enableHttpMethodParameterOverride(); 
$request = Request::createFromGlobals(); 
$response = $kernel->handle($request); 
$response->send(); 
$kernel->terminate($request, $response); 

.htaccess

DirectoryIndex app.php 
#DirectoryIndex app_dev.php 

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
    #RewriteRule ^app_dev\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] 
    RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L] 

    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule .? - [L] 


    RewriteCond %{REQUEST_FILENAME} -f 
    #RewriteRule ^(.*)$ app_dev.php [QSA,L] 
    RewriteRule ^(.*)$ app.php [QSA,L] 

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
    RewriteRule ^(.*) - [E=BASE:%1] 
    #RewriteRule .? %{ENV:BASE}app_dev.php [L] 
    RewriteRule .? %{ENV:BASE}app.php [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    <IfModule mod_alias.c> 
     RedirectMatch 302 ^/$ /app.php/ 
     # RedirectTemp cannot be used instead 
    </IfModule> 
</IfModule> 

composer.json

"extra": { 
     "symfony-app-dir": "app", 

     "symfony-web-dir": "public_html", 

     "symfony-assets-install": "symlink", 
     "incenteev-parameters": { 
      "file": "app/config/parameters.yml" 
     }, 
     "branch-alias": { 
      "dev-master": "2.8-dev" 
     } 
    } 

web.config

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="web directory"> 
        <match url=".*" ignoreCase="false" /> 
        <action type="Rewrite" url="public_html/{R:0}" appendQueryString="true" /> 
       </rule> 
       <rule name="app_php handling" stopProcessing="true"> 
        <match url="^(.*)$" ignoreCase="false" /> 
        <conditions logicalGrouping="MatchAll"> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 
        </conditions> 
        <action type="Rewrite" url="/public_html/app.php" appendQueryString="true" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+0

Meine Vermutung ist, überprüfen Sie die Berechtigungen, aber Sie sollten mehr wissen, wenn Sie die Protokolle überprüfen. – Gustek

+0

Der Ordner 'app/logs' ist leer und der Ordner' www_logs' enthält keine aktuellen Protokolle. – Sirius

+0

Überprüfen Sie Ihre Server-Logs, nicht Symfony diejenigen – vladkras

Antwort

0

Das ist ziemlich häufig, wenn Ihr cache Verzeichnis nicht beschreibbar ist.

chmod 0755 /path/to/cache 

oder in einigen Fällen sogar:

chmod 0777 /path/to/cache 
0

Dies sieht aus wie der Server Ihre Dateien nicht finden können. Nicht sicher über IIS, aber Sie vermissen einige Regeln. einen Blick auf https://gist.github.com/nurbek-ab/9c2997441fcaa2e52b0a

In nginx es ist

root/var/www/Projekt/web;

location/{ 
    # try to serve file directly, fallback to app.php 
    try_files $uri /app.php$is_args$args; 
} 
Verwandte Themen