Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 04.07.2017 13:04:01

новичок: Route::get не находит шаблон запроса

только начал изучать Laravel (в частности, тут  и тут ). Установлен apache2, php 5.6, Laravel 5.4
Пытаюсь в web.php поменять шаблон запроса

Route::get('/', function () {
    return view('welcome'); });

все работает

return "Привет!!";

тоже все хорошо. А вот так

Route::get('/hello', function () {
    return "Привет!!";  });

при вводе адреса localhost/hello пишет 404 URL не найден. Вот конфигурация apache'а

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
DocumentRoot /var/www/php/laravel1/public
  <Directory /home/ja_krevedko/web_projects/laravel1/public>
    Options Indexes FollowSymlinks MultiViews Includes ExecCGI
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

apache2ctl -M ... и a2enmod rewrite на всякий случай выполнил. Что я делаю не так?

Не в сети

#2 04.07.2017 14:40:38

Re: новичок: Route::get не находит шаблон запроса

нужен виртуальный хост + .htaccess в папке public

<VirtualHost *:80>
    DocumentRoot "/var/www/php/laravel1/public"
    ServerName laravel.dev
    <Directory "/var/www/php/laravel1/public">
            AllowOverride All
            Options FollowSymLinks +Indexes
            Order allow,deny
            Allow from all
    </Directory>
</VirtualHost>

.htaccess

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

не забудь поправить servername, должно работать.

Не в сети

#3 04.07.2017 16:08:56

Re: новичок: Route::get не находит шаблон запроса

без толку. По прежнему, срабатывает только на get('/'). А на 'laravel.dev/hello' 404 ошибка

Не в сети

#4 04.07.2017 16:29:55

Re: новичок: Route::get не находит шаблон запроса

в error.log апач что-нибудь интересное пишет?

Не в сети

#5 05.07.2017 08:44:25

Re: новичок: Route::get не находит шаблон запроса

вообще ничего не пишет

Не в сети

#6 05.07.2017 10:37:45

Re: новичок: Route::get не находит шаблон запроса

Права на /storage и /bootstrap/cache меняли после установки? Порой, универсальное средство, чтобы "все заработало".

Не в сети

#7 05.07.2017 10:41:53

Re: новичок: Route::get не находит шаблон запроса

обижаете :-)! без доступа на запись у меня вообще ничего не работало

Не в сети

#8 05.07.2017 10:56:25

Re: новичок: Route::get не находит шаблон запроса

В /storage/logs/laravel.log есть что-нибудь?

php artisan route:list

выдает роут?

Не в сети

#9 05.07.2017 12:35:08

Re: новичок: Route::get не находит шаблон запроса

laravel.log отсутствует
route:list пишет

+--------+----------+----------+------+---------+--------------+
| Domain | Method   | URI      | Name | Action  | Middleware   |
+--------+----------+----------+------+---------+--------------+
|        | GET|HEAD | /        |      | Closure | web          |
|        | GET|HEAD | api/user |      | Closure | api,auth:api |
|        | GET|HEAD | hello    |      | Closure | web          |
+--------+----------+----------+------+---------+--------------+

Изменено mokynis (05.07.2017 12:40:54)

Не в сети

#10 05.07.2017 12:47:09

Re: новичок: Route::get не находит шаблон запроса

Ну да, еще бы работало :-)
И что же это такое:

return "Привет!!";

? :-)
И куда же он должен этот "Привет" передать по-вашему? :-)

Не в сети

#11 05.07.2017 12:56:10

Re: новичок: Route::get не находит шаблон запроса

а это

Route::get('/', function () {
    return "Привет!!";
    });

почему тогда передается? Или где-то (в public?) надо создать папку "hello"?

Изменено mokynis (05.07.2017 12:59:35)

Не в сети

#12 05.07.2017 13:00:13

Re: новичок: Route::get не находит шаблон запроса

Не знаю. Если с возвратом представления все работает нормально, думаю, заморачиваться не стоит.

Не в сети

#13 05.07.2017 13:45:37

Re: новичок: Route::get не находит шаблон запроса

И куда же он должен этот "Привет" передать по-вашему?

вывести в браузер конечно. из обработчика запроса можно много чего вернуть. тот же view превращается в текстовый ответ потому что содержит магический метод __toString(), специальной обработки для него там вроде нет. можно вернуть массив или Collection – тогда автоматом будет выставлен content-type: application/json и на результате будет сделать json_encode. в документации всё есть…

по-моему у mokynis просто не включен mod_rewrite в апаче. надо попробовать сделать a2enmod rewrite и выполнить systemctl restart apache2

ps. а не, прочитал первое сообщение, уже сделано. тогда не знаю…

Изменено constb (05.07.2017 13:46:30)

Не в сети

#14 05.07.2017 13:47:56

Re: новичок: Route::get не находит шаблон запроса

стОит. Я сейчас курс слушаю (https://www.youtube.com/watch?v=R-oH8iTAhVc), там в web.php примерно такое (это я ооочень условно написал)

Route::get('/', function () {
    return view('test');
    });

Route::get('{num}', function () {
    return "Привет {{', '.$num.' раз'}}!!";
    });

и во view test.blade.php

<?php $num=5; 
echo "<a href=".$num.">нажать</a>" ?>

и вот тут-то у лектора все нормально срабатывает, а у меня "404"

Не в сети

#15 05.07.2017 13:59:20

Re: новичок: Route::get не находит шаблон запроса

по-моему у mokynis просто не включен mod_rewrite в апаче.

на всякий случай посмотрел вывод phpinfo()

Loaded Modules    
core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_filter mod_mime prefork mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status

Не в сети

#16 07.07.2017 00:49:48

Re: новичок: Route::get не находит шаблон запроса

А если из предлагаемого по-умолчанию маршрута
Route::get('/', function () {
    return view('welcome'); });
Сделать
'/hello'
а view()... оставить?

если не поможет, ещё попробовать php artisan serve в консоли, и не закрывая консоль ещё раз открыть тот же маршрут

Не в сети

#17 07.07.2017 08:26:55

Re: новичок: Route::get не находит шаблон запроса

Прошу у всех прощения за глупости, что писал в этой теме. Был неправ.

Не в сети

#18 07.07.2017 08:33:50

Re: новичок: Route::get не находит шаблон запроса

Сделать
'/hello'
а view()... оставить?

выдал экран ошибки программы

 (1/1) NotFoundHttpException
in RouteCollection.php (line 179)

после php artisan serve та же самая ошибка. Может, Laravel какой-то неправильный (как пчелы у Вини-Пуха). Во всяком случае NetBeans подсвечивает его красным и пишет, что проект содержит ошибки. Напирмер, в /vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php (хотя там, кажется, нечему быть неправильным)

Не в сети

#19 07.07.2017 09:22:29

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: новичок: Route::get не находит шаблон запроса

  1. NetBeans подсвечивает его красным

Может попробовать сделать composer update? Мало ли, вдруг реально какой то фаил там «поврежден»

Изменено TrueKanonir (07.07.2017 09:24:11)

Не в сети

#20 07.07.2017 11:46:04

Re: новичок: Route::get не находит шаблон запроса

увы. Ничего не дало. Это только мне с Laravel так не везет?

Не в сети

#21 07.07.2017 12:02:16

Re: новичок: Route::get не находит шаблон запроса

NetBeans может быть старой версии и ничего не знать про пхп той версии, под которую написан ларавель (сейчас – 5.6). какой-нибудь синтаксис, который сейчас вполне рабочий, ему может казаться ошибкой…

увы. Ничего не дало. Это только мне с Laravel так не везет?

в чём-то определённо не везёт. возможно апач/пхп как-то не так установлены, всякое бывает… даже если на чистую систему из пакетов ставить, некоторые вещи надо отдельно настраивать бывает. судя по пхп 5.6, я подозреваю, стоит debian jessie…

Изменено constb (07.07.2017 12:03:57)

Не в сети

#22 07.07.2017 12:06:31

Re: новичок: Route::get не находит шаблон запроса

NetBeans, скорее всего, подсвечивает конструкции вида *::class, там нужно перенастроить проверку синтаксиса на другую версию php, кажется. У меня что-то такое было. Вообще, посмотрите в сторону Atom :-)
405e945abbaet.jpg
"Не везет", думаю, только Вам одному. Притом учтите, что никто здесь не видит, что там у Вас, на самом деле, происходит. Лично я бы (лично я!), совсем отчаявшись, попробовал бы снова сделать чистую установку с нуля, по какой-нибудь толковой инструкции. Как веб-сервера, так и фреймворка, тестируя каждый шаг.

Не в сети

#23 07.07.2017 12:07:41

Re: новичок: Route::get не находит шаблон запроса

ещё мысль есть такая, что с правами могут быть косяки если файлы или папки создавались или правились из-под рута. насколько я понимаю всё работает от www-data (и апач и пхп) в папке /var/www ? это не очень хорошо, но можно попытаться сделать так:

chown -R www-data:www-data /var/www
find /var/www -type f -print0 | xargs -0 chmod 0644
find /var/www -type d -print0 | xargs -0 chmod 0755

– полный сброс прав и владельцев на всё что находится внутри, может поможет?…

Не в сети

#24 07.07.2017 12:42:01

Re: новичок: Route::get не находит шаблон запроса

я подозреваю, стоит debian jessie…

именно так. И NetBeans 8.2 Вообще, не замечал косяков в связке apache-php. Я конечно, "не волшебник, я только учусь", но так, чтобы, как я понимаю, тривиальные функции Laravel не срабатывали, такой глюк уже, наверное, бы вылез
У меня в /var/www/ только одна ссылка на /home/<я>/web_projects и та нее и ее содержимое у всех полный доступ, так что не в нем дело

Изменено mokynis (07.07.2017 12:47:07)

Не в сети

#25 07.07.2017 12:55:40

Re: новичок: Route::get не находит шаблон запроса

чтобы, как я понимаю, тривиальные функции Laravel не срабатывали, такой глюк уже, наверное, бы вылез

Откуда уверенность, что проблема в Laravel? Если на /hello выдаётся 404, то это, я так понимаю, 404 от Apache? В этом случае Laravel вообще ни при чём - замени index.php на простой <?php phpinfo();, или, еще лучше - поменяй пути в conf и htaccess на папку где-нибудь в /var/www и создай новый index.php там, и посмотри, даст это что-нибудь или нет.

Не в сети

Подвал раздела