12380


現在、以下の内容で symfony2 に取り組んでいますが、最初から躓いていますのでお力を貸して下さい。

### 環境

CentOS 6.6 (※Windows7 上の VirtualBox で実行)  
nginx/1.8.0  
symfony/2.7.2

### インストール手順

[code]

    $ sudo curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony
    $ sudo chmod a+x /usr/local/bin/symfony
    $ su root
    # cd /home
    # symfony new www 2.7
    # chown nginx -R /home/www
    # chgrp nginx -R /home/www
    # chmode a+rwx /home/www/app/cache
    # chmode a+rwx /home/www/app/logs
    
[/code]

### 確認したこと

`http://hogehoge/config.php` にアクセス  
→ Welcome! Your configuration looks good to run Symfony.が表示される。  
正常に動作していると思います。

### 困っていること

以下のサイトを参考に進めているつもりですが、後述するURLでアクセスするとそれぞれエラーになってしまうため、正常に動作していないと思われます。

<http://docs.symfony.gr.jp/symfony2/quick_tour/the_big_picture.html#quick-
tour-big-picture-built-in-server>

  * `http://hogehoge/app_dev.php` にアクセス  
→ No route found for "GET /" が表示される。

  * `http://hogehoge/app_dev.php/` にアクセス  
→ File not found が表示される。

  * `http://hogehoge/app/example/` にアクセス  
→ File not found が表示される。

お手数をお掛けして申し訳ございませんが、よろしくお願いします。


CC BY-SA 4.0
2015-07-15T02:09:54.033
12365
2020-07-14T17:04:56.243
2020-07-14T17:04:56.243
3060
10533
question
nginx symfony2
app_dev.php/ にアクセスすると File not found が返ってきます。


コメント欄の Symfony2.7
の勉強の進め方について回答します。現時点では古いバージョンを対象としたチュートリアルのコードが使えるかは自分で確かめるしかないです。

最初の段階ではちょっとしたミスでうまくゆかないことが多いので、こまめに質問してください。困っていることをことばで表現することで、何が問題なのかがはっきりすることはよくあります。

私が Symfony 2.7
で検証した内容の一覧は、[こちら](http://blog.sarabande.jp/tagged/symfony2.7)から見ることができます。

最小限必要な知識の例として次の内容を挙げます。

  * ルーティングの表記にアノテーションが使える。
  * HTTP ヘッダーやボディの読み書きに Request/Response オブジェクトを使う。
  * セッションの管理に Session オブジェクトを使う。
  * mysql/mysqli/PDO の代わりに Doctrine DBAL を使うことができる。
[code]     /**

     * @Route("/app/example", name="homepage")
     */
    
    public function indexAction()
    {
        return new Response('Hello');
    }
    
    // Request
    $request = $this->getRequest();
    $foo = $request->request->get('foo', 'デフォルト値');
    $token = $request->headers->get('X-CSRF-Token')
    
    // Response
    $response = new Response('Hello', 200);
    $response->headers->set('Content-Type', 'text/html');
    
    return $response;
    
    // Session
    $session = $this->getRequest()->getSession();
    $session->set('bar', 'some value');
    $bar = $session->get('bar');
    
    // Doctrine DBAL
    
    // app/config/parameters.yml に接続情報を記載した上で
    // コマンドラインからデータベースを生成する
    // php app/console doctrine:database:create
    
    $conn = $this->get('database_connection');
    $ret = $dbh->fetchAll("SELECT * FROM test_table");
    
[/code]

勉強時間を十分に確保できない場合や教えてくれる人がいないのであれば、Doctrine ORM
やフォーム、ユーザー管理機能などは使わずにアプリの開発を進める選択肢があります。

かぎられた知識と時間のなかで動くコードを書いた上で、冷却期間をおいて、洗練されたコードに書き換えるというのはよくあることです。

Symfony のフォームクラスを使わない場合に注意が必要なことはリクエストの強要攻撃 (CSRF) の対策を自分で実装する必要があることです。

Symfony
によるサンプルコードは[こちらの記事](http://blog.sarabande.jp/post/124136118378)をご参照ください。平易な
PHP によるコードの例は[こちらの記事](http://blog.sarabande.jp/post/88201025803)をご参照ください。

かんたんに説明すると、フォームの隠しフィールドもしくは HTTP
ヘッダーから送信されてきたトークンもしくはナンスをサーバーが検証する必要があるということです。

初心者の段階では PHP のフォームの動作確認はブラウザーを使う機会が多いと思いますが、HTTP メソッド (POST や
GET)、ヘッダーやボディの値によってレスポンスの内容を変えたい場合、curl や httpie などのコマンドツール、Guzzle のような HTTP
クライアントのライブラリが検証に便利です。


CC BY-SA 3.0
2015-07-15T10:08:14.397
12380
2015-07-15T10:08:14.397
568
12365
answer