2830


CakePHP を動作させる際に phpMyAdmin を設定する際のことに関して質問です。

環境：

  * CentOS6
  * PHP 5.5
  * CakePHP 2.6.0

でやっています。

[code]

    /var/www/phpmyadmin/
    
[/code]

に alias 指定でアクセスさせるために質問後半に示すような設定ファイルを書いた結果

[code]

    http://localhost/phpmyadmin/
    
[/code]

でアクセスすることはできたんですが、

[code]

    File not Found
    
[/code]

が出てしまいます…  
読み込ませるにはどうすればいいでしょうか？

以下 `/etc/nginx/conf.d/default.conf` に記載した設定

[code]

    server {
        listen 80;
        server_name localhost;
    
        #中略
        location /phpmyadmin {
             alias /var/www/phpmyadmin;
             index index.php;
    
             location ~ \.php$ {
                      root /var/www/phpmyadmin;
                      fastcgi_pass 127.0.0.1:9000;
                      fastcgi_index index.php;
                      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                      include fastcgi_params;
             }
        }
    
        #中略
    
        #CakePHPのURLリライティング設定
        location ~ \.php$ {
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
             include        fastcgi_params;
        }
    }
    
[/code]


CC BY-SA 3.0
2014-12-30T09:50:52.057
2828
2015-01-19T13:03:57.263
2015-01-19T13:03:57.263
4978
2487
question
php cakephp nginx phpmyadmin
nginx の alias指定で phpMyAdmin に接続する時の File Not Found エラーの解消法


CakePHPとphpMyAdiminをバーチャルホストで分離してみました。CakePHPを`http://localhost/`で、phpMyAdminを`http://localhost:8080`でアクセスできるようにしています。

[code]

    # phpMyAdmin
    server {
        listen 8080;
        server_name localhost;
    
        root   /var/www/phpmyadmin;
    
        location / {
            index index.php index.html;
        }
    
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
    
    # CakePHP
    server {
        listen 80;
        server_name localhost;
    
        root   /var/www/html/cakephp/webroot/;
        index index.php;
    
        location / {
            try_files $uri $uri/ /index.php?$uri&$args;
        }
    
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
    
[/code]

## 動作確認

  * nginx 1.6.2
  * CakePHP 2.6.0
  * phpMyAdmin 4.3.4

## 参考URL

[CakePHP Cookbook 2.x ドキュメント -
nginxでのきれいなURL](http://book.cakephp.org/2.0/ja/installation/url-
rewriting.html#nginxurl)


CC BY-SA 3.0
2014-12-30T10:37:30.267
2830
2014-12-30T17:16:47.900
2014-12-30T17:16:47.900
5296
5296
2828
answer


[Nginx での location 優先順位まとめ -
tkuchikiの日記](http://tkuchiki.hatenablog.com/entry/2013/01/30/191604)によると修飾子なしの前方一致は優先順位が一番低く、`location
~ \\.php$`が優先されているものかと思われます。

とりあえず正常に動作してるAmimotoを参考に、Cake用のlocationディレクティブを`location /`で囲ってみるといいかもしれません。

[code]

    server {
        listen 80;
        server_name localhost;
    
        #中略
        location /phpmyadmin {
             alias /var/www/phpmyadmin;
             index index.php;
             #中略
        }
    
        #中略
    
        #CakePHPのURLリライティング設定
        location / {
            location ~ \.php$ {
                 fastcgi_pass   127.0.0.1:9000;
                 fastcgi_index  index.php;
                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                 include        fastcgi_params;
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2014-12-30T12:13:23.487
2835
2014-12-30T12:13:23.487
2376
2828
answer