2016-09-04 2 views
2

私はCakePHPアプリケーションを実行してきた中で定義され、すべてがうまく働いていません。さて、突然私の側から変更することなく、物事がうまくいかない:エラーで任意のログイン結果:アクションウェブルートは、2年以上</p> <p>www.lernzentrum.de/kundenservice</p> <p>下のコントローラのAppController

は、「アクションWebrootのは、コントローラのAppControllerで定義されていません」

をあなたは自分のサイトでこの自分を試すことができます。 /kundenservice/.htaccessで

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

/kundenservice/app/webroot/.htaccessで

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 
私は私の.htaccessファイルを与えているので、それは、ルーティングエラーのように見えます/kundenservice/app/.htaccessで

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

そして、ここでは、error.logファイルの一部です:

2016-08-30 14:42:46 Error: [MethodNotAllowedException] Method Not Allowed 
Request URL: /kundenservice/lessons/spenden/6674 
Stack Trace: 
#0 [internal function]: LessonsController->spenden('6674') 
#1 /mnt/web4/c3/63/51573863/htdocs/kundenservice/lib/Cake/Controller/Controller.php(486): ReflectionMethod->invokeArgs(Object(LessonsController), Array) 
#2 /mnt/web4/c3/63/51573863/htdocs/kundenservice/lib/Cake/Routing/Dispatcher.php(187): Controller->invokeAction(Object(CakeRequest)) 
#3 /mnt/web4/c3/63/51573863/htdocs/kundenservice/lib/Cake/Routing/Dispatcher.php(162): Dispatcher->_invoke(Object(LessonsController), Object(CakeRequest), Object(CakeResponse)) 
#4 /mnt/web4/c3/63/51573863/htdocs/kundenservice/app/webroot/index.php(109): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) 
#5 {main} 

---これは予期したとおりに動作していたアプリケーションの例外です。 ---次は青い空から現れた謎の新しいエラーです:

2016-08-31 19:20:25 Error: [MissingActionException] 
Action AppController::webroot() could not be found. 
Exception Attributes: array (
    'controller' => 'AppController', 
    'action' => 'webroot', 
) 
Request URL: /kundenservice/app/webroot/service/cron 
Stack Trace: 
#0 /mnt/web4/c3/63/51573863/htdocs/kundenservice/lib/Cake/Routing/Dispatcher.php(187): Controller->invokeAction(Object(CakeRequest)) 
#1 /mnt/web4/c3/63/51573863/htdocs/kundenservice/lib/Cake/Routing/Dispatcher.php(162): Dispatcher->_invoke(Object(AppController), Object(CakeRequest), Object(CakeResponse)) 
#2 /mnt/web4/c3/63/51573863/htdocs/kundenservice/app/webroot/index.php(109): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) 
#3 {main} 

リクエストURLは、単純に/アプリ/ウェブルートを含めることはできません。

サーバーはStratoのパワーウェブパッケージで動作しているので、httpd.confにアクセスすることはできません。どんな助けでも大歓迎です。誰かが私に電話でサポートを提供したい場合(電話番号は私のウェブサイトにあります)、私はそれを支払うことに満足しています。

敬具、ヴィルヘルム

答えて

1

私は回避策がありますが、私はそれがいい、「本物」、解決策ではないことを承知しています。

この問題の原因は、$_SERVER['REQUEST_URI']にURLがリダイレクトされた形式(例:/kundenservice/users/forgotではなく/kundenservice/app/webroot/users/forgot)であることが明らかです。これは/以外のルートでのみ発生しますが、ルートページが機能します。その理由は、/kundenservice/app/webroot/.htaccessRewriteRuleがこの動作を引き起こしているということです。URLが既存のファイルまたはディレクトリを指していない場合にのみ有効で、は/index.phpに向けられているため、このファイルは存在しません。この場合に表示されます。

インターネットで検索すると、逆の質問をしたユーザーのみが見つかりました:$_SERVER['REQUEST_URI']を書き換えてどうすればいいですか? - その答えは、実行されるべきではなく、可能ではないということです([P]を使用しないか、変数を手動で変更しない限り)。

これはおそらくStratoの設定更新版の何らかのバージョンによるものです。私のローカルマシンでは、XAMPPで同じシナリオをテストすると、すべてが期待どおりに機能していました。

この問題の根本的な解決策を見つけることができませんでした。しかし、私はCakePHPの特定の問題の回避策を見つけることができました - つまり、誰もがそれらを見る前に、関連する$_SERVER変数から混乱しているapp/webroot部分を削除するだけです。

.../app/webroot/index.php

、直接<?phpの下に次の行を追加します。

// Workaround for weird .htaccess rewriting problem 
// Whenever both the rule in /.htaccess and /app/webroot/.htaccess are active, 
// for some reason the actual URLs sent to PHP are modified (they shouldn't be). 
$_SERVER['REQUEST_URI'] = str_replace('/app/webroot/', '/', $_SERVER['REQUEST_URI']); 
$_SERVER['SCRIPT_URI'] = str_replace('/app/webroot/', '/', $_SERVER['SCRIPT_URI']); 
$_SERVER['SCRIPT_URL'] = str_replace('/app/webroot/', '/', $_SERVER['SCRIPT_URL']); 

としては、私は、これは根本的な原因を解決していないと、それは醜いソリューションであることを知っている、上記と述べたが、それは今のために働きます。

-

は(...ルートルートが機能しないこと、もう1つはここにいくつかのより多くの策略を必要とするので、他の人は、行う別の方法は config/core.phpbaseUrl構成で遊ぶかもしれないが、その後、反対に発生することがあります)
関連する問題