Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
только начал изучать 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 на всякий случай выполнил. Что я делаю не так?
Не в сети
нужен виртуальный хост + .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, должно работать.
Не в сети
без толку. По прежнему, срабатывает только на get('/'). А на 'laravel.dev/hello' 404 ошибка
Не в сети
в error.log апач что-нибудь интересное пишет?
Не в сети
вообще ничего не пишет
Не в сети
Права на /storage и /bootstrap/cache меняли после установки? Порой, универсальное средство, чтобы "все заработало".
Не в сети
обижаете :-)! без доступа на запись у меня вообще ничего не работало
Не в сети
В /storage/logs/laravel.log есть что-нибудь?
php artisan route:list
выдает роут?
Не в сети
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)
Не в сети
Ну да, еще бы работало :-)
И что же это такое:
return "Привет!!";
? :-)
И куда же он должен этот "Привет" передать по-вашему? :-)
Не в сети
а это
Route::get('/', function () {
return "Привет!!";
});
почему тогда передается? Или где-то (в public?) надо создать папку "hello"?
Изменено mokynis (05.07.2017 12:59:35)
Не в сети
Не знаю. Если с возвратом представления все работает нормально, думаю, заморачиваться не стоит.
Не в сети
И куда же он должен этот "Привет" передать по-вашему?
вывести в браузер конечно. из обработчика запроса можно много чего вернуть. тот же 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)
Не в сети
стОит. Я сейчас курс слушаю (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"
Не в сети
по-моему у 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
Не в сети
А если из предлагаемого по-умолчанию маршрута
Route::get('/', function () {
return view('welcome'); });
Сделать
'/hello'
а view()... оставить?
если не поможет, ещё попробовать php artisan serve в консоли, и не закрывая консоль ещё раз открыть тот же маршрут
Не в сети
Прошу у всех прощения за глупости, что писал в этой теме. Был неправ.
Не в сети
Сделать
'/hello'
а view()... оставить?
выдал экран ошибки программы
(1/1) NotFoundHttpException
in RouteCollection.php (line 179)
после php artisan serve та же самая ошибка. Может, Laravel какой-то неправильный (как пчелы у Вини-Пуха). Во всяком случае NetBeans подсвечивает его красным и пишет, что проект содержит ошибки. Напирмер, в /vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php (хотя там, кажется, нечему быть неправильным)
Не в сети
Не в сети
увы. Ничего не дало. Это только мне с Laravel так не везет?
Не в сети
NetBeans может быть старой версии и ничего не знать про пхп той версии, под которую написан ларавель (сейчас – 5.6). какой-нибудь синтаксис, который сейчас вполне рабочий, ему может казаться ошибкой…
увы. Ничего не дало. Это только мне с Laravel так не везет?
в чём-то определённо не везёт. возможно апач/пхп как-то не так установлены, всякое бывает… даже если на чистую систему из пакетов ставить, некоторые вещи надо отдельно настраивать бывает. судя по пхп 5.6, я подозреваю, стоит debian jessie…
Изменено constb (07.07.2017 12:03:57)
Не в сети
NetBeans, скорее всего, подсвечивает конструкции вида *::class, там нужно перенастроить проверку синтаксиса на другую версию php, кажется. У меня что-то такое было. Вообще, посмотрите в сторону Atom :-)
"Не везет", думаю, только Вам одному. Притом учтите, что никто здесь не видит, что там у Вас, на самом деле, происходит. Лично я бы (лично я!), совсем отчаявшись, попробовал бы снова сделать чистую установку с нуля, по какой-нибудь толковой инструкции. Как веб-сервера, так и фреймворка, тестируя каждый шаг.
Не в сети
ещё мысль есть такая, что с правами могут быть косяки если файлы или папки создавались или правились из-под рута. насколько я понимаю всё работает от 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
– полный сброс прав и владельцев на всё что находится внутри, может поможет?…
Не в сети
я подозреваю, стоит debian jessie…
именно так. И NetBeans 8.2 Вообще, не замечал косяков в связке apache-php. Я конечно, "не волшебник, я только учусь", но так, чтобы, как я понимаю, тривиальные функции Laravel не срабатывали, такой глюк уже, наверное, бы вылез
У меня в /var/www/ только одна ссылка на /home/<я>/web_projects и та нее и ее содержимое у всех полный доступ, так что не в нем дело
Изменено mokynis (07.07.2017 12:47:07)
Не в сети
чтобы, как я понимаю, тривиальные функции Laravel не срабатывали, такой глюк уже, наверное, бы вылез
Откуда уверенность, что проблема в Laravel? Если на /hello выдаётся 404, то это, я так понимаю, 404 от Apache? В этом случае Laravel вообще ни при чём - замени index.php на простой <?php phpinfo();, или, еще лучше - поменяй пути в conf и htaccess на папку где-нибудь в /var/www и создай новый index.php там, и посмотри, даст это что-нибудь или нет.
Не в сети