Уже который час не могу понять, почему Yii2 Advanced выводит страницы только от главного контроллера (который в конфиге указан как 'defaultRoute' => 'site'). Все остальные страницы не открываются. Вернее, открываются, но выводится просто пустой экран без всяких сообщений об ошибках.
Я максимально упростил вывод: убрал из контроллеров поведения для определения, авторизирован пользователь или нет; убрал из конфига компонент, который отвечает за авторизацию; закомментировал там же все ненужные для теста инструкции.
В
backend/web/index.php добавил:
error_reporting(-1);
ini_set('display_errors', true);
В
php.ini установил:
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
Сервер крутится на связке Apache 2 и Nginx.
Запрос:GET /yii2/backend/web/index.php?r=test%2Findex HTTP/1.1
Host: *мой_хост*
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru,en-US;q=0.8,en;q=0.6
Cookie: __utma=222857945.2129854740.1435519076.1435519076.1435519076.1; __utmc=222857945; __utmz=222857945.1435519076.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _csrf=1d0e0163f286b1f1fb234401912aafe896bf696683f3199f7e5719a51796907ba%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%226FsOE_vxJy0QFmU7tkp5OyVHpkbny6cw%22%3B%7D; _identity=94b058838e402ac88ced81c18744afa51af5d1ab75e6f8b4e4e714b420bec60da%3A2%3A%7Bi%3A0%3Bs%3A9%3A%22_identity%22%3Bi%3A1%3Bs%3A14%3A%22%5B1%2C%22%22%2C2592000%5D%22%3B%7D; PHPSESSID=kc7qvnb2no2edlfc3kcnadh5o5
Ответ:HTTP/1.1 200 OK
Server: nginx/1.6.2 (Ubuntu)
Date: Thu, 05 Nov 2015 15:30:06 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
Vary: Host
X-Powered-By: PHP/5.6.4-4ubuntu6.4
В результате нет соответствующих ошибок ни в апачевском error.log, ни в yii-шном app.log. Директория runtime, естественно, доступна для записи.
На всякий случай привожу код контроллера и представлений.
Контроллер:<?php
namespace backend\controllers;
use Yii;
use yii\web\Controller;
/**
* Created by PhpStorm.
* User: max
* Date: 05.11.15
* Time: 16:21
*/
class TestController extends Controller {
/**
* Renders the index page.
* @return string rendered code
*/
public function actionIndex() {
$this->layout = 'test';
$this->render('//index/test');
}
}
Лэйаут test.php:<html>
<body>
<?= $content; ?>
</body>
</html>
Повторюсь, страницы из главного контроллера SiteController выводятся нормально.
Что интересно: если в $this->render прописать несуществующее представление, то будет выведена ошибка. Т.е. код до выполнения метода render ещё отрабатывается. Также, если в самом представлении намеренно сделать ошибки, это снова будет выведено. Получается, что и сам метод render отрабатывается.
В чём может быть проблема?