运行Yii应用程序时error.log中的Apache错误

时间:2014-04-03 09:47:16

标签: apache yii

在ubuntu机器上测试我的yii应用程序时,每次访问页面时/var/log/apache2/error.log都会显示以下错误。

客户端被服务器配置拒绝:/ var / www / item,referer:https://xxx.xx.xx.xxx/storemgr/issue/manage

在Windows中测试时没有错误记录。

但我在浏览器中访问网页时没有遇到任何问题。

我使用的网址:https://xxx.xx.xx.xxx/storemgr/item/manage

我的Apache配置:

<Directory /var/www/storemgr/>
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>

main.php中的网址管理器

    'urlManager'=>array
    (
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array
        (
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),

.htaccess webroot的内容(即storemgr)

<ifModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
</ifModule>

请帮忙。

2 个答案:

答案 0 :(得分:0)

的config.php

'urlManager' => array(
            'urlFormat' => 'path',
            'showScriptName' => false,
            'caseSensitive' => false,
            'rules' => require(SITE_PATH_CONFIG . '_routes.php'
                )
        ),

的.htaccess

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

虚拟主机

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName siteName
    DocumentRoot /folder/name

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /folder/name/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

再次检查你的配置。还想说&#34; Windows&#34;中的路由存在问题。基于适应 - 简单的例子是&#34; \&#34;不相等&#34; /&#34;所以在* nix-list和Windows OS中可能会有麻烦。

同时重新检查您的路线。路由它匹配它将被使用,所以首先添加(到路由数组)路由短路由,简单的例子它应该是什么

'some/<id>/<action>' => 'some/doAction',
'some/<id>/someAction' => 'some/doActionSome'

第二个永远不会被使用。所以你应该先添加它。

PS:找出问题所在的最佳方法 - 找到崩溃的位置,控制器/方法等等。当你找到时 - 你可以看看那里使用了什么路线并理解你的麻烦(或提问)。没有它,没有人可以帮助你解决问题。

答案 1 :(得分:0)

根本没有Yii问题。我猜你最近升级到了13.10 Saucy。 它是Apache Server的一个变化。您需要添加新指令:grant 这是一个例子

<Directory /var/www/storemgr/>
   Order allow,deny
   Allow from all
   # New directive for new Apache 
   Require all granted
</Directory>

升级到2.4 here

时查看更改