2016-06-13 8 views
0

私はsymfony2フレームワークを使用して自分のPHPプロジェクトを行っています。今私はcPanelを使ってサーバでそれをホストする必要があります。サーバーのwebフォルダはpublic_htmlで、プロジェクトWebフォルダの名前はtestです。私は、ブラウザでプロジェクトを開いたときしかし、私は唯一のsymfony 2.7アプリケーションをホストできません

、誰かがこれは私のファイル構造であることに

を見ることができればそれは大きな助けになり http://silverdreamtours.com/test/

、これは私のURLである ...私のフォルダを見ることができます

Root/ 
├─public_html 
    ├─www 
    │ ├─app.php 
    │ └─... 
    ├─test 
    ├─app 
    │ ├─config/ 
    │ └─ ... 
    ├─ vendor/ 
     └─ ... 

wwwディレクトリにあるマイapp.phpファイル、

<?php 
    use Symfony\Component\ClassLoader\ApcClassLoader; 
    use Symfony\Component\HttpFoundation\Request; 

    //$loader = require_once __DIR__.'/../app/bootstrap.php.cache'; 
    $loader = require_once __DIR__.'/../test/app/autoload.php'; 

    // Enable APC for autoloading to improve performance. 
    // You should change the ApcClassLoader first argument to a unique prefix 
    // in order to prevent cache key conflicts with other applications 
    // also using APC. 
    /* 
    $apcLoader = new ApcClassLoader(sha1(__FILE__), $loader); 
    $loader->unregister(); 
    $apcLoader->register(true); 
    */ 

    //require_once __DIR__.'/../app/AppKernel.php'; 
    //require_once __DIR__.'/../app/AppCache.php'; 
    require_once __DIR__.'/../test/app/AppKernel.php'; 

    $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); 

そしてapp_dev.phpファイル、

<?php 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\Debug\Debug; 

// If you don't want to setup permissions the proper way, just uncomment the following PHP line 
// read http://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup 
// for more information 
//umask(0000); 

// This check prevents access to debug front controllers that are deployed by accident to production servers. 
// Feel free to remove this, extend it, or make something more sophisticated. 
if (isset($_SERVER['HTTP_CLIENT_IP']) 
    || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server') 
) { 
    header('HTTP/1.0 403 Forbidden'); 
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

//$loader = require_once __DIR__.'/../app/bootstrap.php.cache'; 
$loader = require_once __DIR__.'/../test/app/autoload.php'; 
Debug::enable(); 

//require_once __DIR__.'/../app/AppKernel.php'; 
require_once __DIR__.'/../test/app/AppKernel.php'; 

$kernel = new AppKernel('dev', true); 
$kernel->loadClassCache(); 
$request = Request::createFromGlobals(); 
$response = $kernel->handle($request); 
$response->send(); 
$kernel->terminate($request, $response); 

composer.jsonファイル、

"extra": { 
     "symfony-app-dir": "app", 
     "symfony-web-dir": "web", 
     "symfony-assets-install": "relative", 
     "incenteev-parameters": { 
      "file": "app/config/parameters.yml" 
     }, 
     "branch-alias": { 
      "dev-master": "2.7-dev" 
     } 
    } 
+1

http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html – 1ed

答えて

2

最も簡単な方法は、FTPを介してサーバにプロジェクトフォルダをコピーし、「ウェブ」フォルダを指しているドメインが含まれるだろう。これは不可能なので、他の方法で試してみる必要があります。

symfonyでは、あなたのパブリックフォルダはデフォルトで "web"ディレクトリにあります。あなたの場合、そのフォルダの名前を "www" like thisに変更してから、フルネームのプロジェクトをサーバーにコピーして、名前が変更されたwwwフォルダがサーバーのwwwの位置と一致するようにする必要があります。そのフォルダの名前を変更するだけでなく、symfonyフォルダの外に移動することも、必要に応じてapp.phpファイルをプロジェクトのルートに配置することもできます。調理法の設定をそのまま適用するだけです。しかし、最初に説明したように、プロジェクトのソースをパブリックフォルダの外に置いておくと便利です。ことについて

your-project/ 
├─ app/ 
│ ├─ config/ 
│ └─ ... 
├─ vendor/ 
│ └─ ... 
└─ www/ 
    ├─ app.php 
    └─ ... 

は今、私たちはこのような構造を得るために、「ウェブ」フォルダの名前を変更する必要があります。この

your-project/ 
├─ app/ 
│ ├─ config/ 
│ └─ ... 
├─ vendor/ 
│ └─ ... 
└─ web/ 
    ├─ app.php 
    └─ ... 

などのフォルダにあなたのsymfonyプロジェクトを持っていると言うことができます1つの主な構成があります。 app/config/config.ymlの最初

# Assetic Configuration 
assetic: 
    read_from: "%kernel.root_dir%/../www" 

あなたが行う必要がある以上にそのフォルダの名前を変更する予定がある場合。これがサーバーのファイル構造であるとしましょう。

root/ 
├─ www/ 

それはそのようにWWWフォルダの位置が同じになりますので、ケースは、あなたが、ルートに「自分のプロジェクト」フォルダ内のすべてのファイルをコピーして貼り付ける必要があります。そして最後に、あなたは、このサーバに一つだけのプロジェクトをホストすることができ、このように見ることができ、あなたのプロジェクトの横のファイルは、他のファイルが既にルートフォルダ内の既存のと混合され得るように

このような
root/ 
    ├─ app/ 
    │ ├─ config/ 
    │ └─ ... 
    ├─ vendor/ 
    │ └─ ... 
    └─ www/ 
     ├─ app.php 
     └─ ... 

を維持し、そうします

root/ 
    ├─www 
    ├─your-project 
    ├─ app/ 
    │ ├─ config/ 
    │ └─ ... 
    ├─ vendor/ 
     └─ ... 

これを行うには、設定を変更する必要があります。yml

# Assetic Configuration 
    assetic: 
     read_from: "%kernel.root_dir%/../../www" 

また、app.phpとapp_dev.phpをwwwフォルダ内に変更する必要があります。

//look for this lines and change it like this 

$loader = require_once __DIR__.'/../your-project/app/autoload.php'; 
//... 
require_once __DIR__.'/../your-project/app/AppKernel.php'; 
//.. 

パブリックドメインにアクセスすると、wwwフォルダがリクエストを受け取り、フレームワークを呼び出します。フォルダを移動した後、アセットのインストールとダンプを再度実行します。

ご希望の場合はこちらをご覧ください。

+0

こんにちは、私はcomposer.jsonで "symfony-web-dir"を変更しようとしましたが、動作しませんでした。もう少し説明することができれば、本当に大きな助けになるでしょう(例があります)。本当に申し訳ありませんが、私はこれに少し慣れています – vimuth

+1

私はより良い理解のために私の答えを更新します。 – abdiel

+0

ありがとう、私はあなたのコードを試しましたが、それは私のために働いていないようです。私は最新のコードで質問を更新しました。あなたのことを気に入って本当に申し訳ありません。私はあなたの答えを受け入れるだけでなく、あなたが私にこれを助けることができるなら、私が知っているすべての人にupvoteに伝えることを約束します。神はあなたを助けてくれます。 – vimuth

関連する問題