laravelを使用しています。
https://localhost/project/public/への接続はできるのですが、
それ以外へのアクセスを行うと404エラーが発生してしまいます。
原因として想定されるものは何が考えられますでしょうか。
なお、mac上では接続できるのですが、vagrantにて設置したところ下記のような現象が発生しております。
php
1<?php 2 3//こちらには接続できる 4Route::get('/', function () { 5 return print "test"; 6}); 7 8//こちらに接続すると404エラー 9Route::get('/test', function () { 10return print "test2"; 11}); 12 13 14Route::auth(); 15 16Route::get('/home', 'HomeController@index'); 17~
エラーメッセージ
Not Found
The requested URL /project/public/test was not found on this server.
Apache/2.4.7 (Ubuntu) Server at 172.23.130.23 Port 8443
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答3件
16
natadyさん、aglkjgggさん お力添えありがとうございました。
無事解決いたしました。
リライトに関しまして、対応が必要な事項が別にありましたので、
既に解決済みだったことも含め対応した全てのことを、こちらの方に記載をさせていただきます。
環境
ubuntu
vagrant
apache2
問題
laravelをインストールしたが404エラーで表示ができない。
原因
1.laravelの特定のフォルダに対して権限が付与されていなかった
2.apache2のリライト対応がされていなかった
対応内容
原因1にもある特定のフォルダに対して権限の付与を行いました。(aglkjgggさんのコメントをご参照)
storage以下全てのディレクトリフォルダを777に設定する
chmod 777 storage -R
bootstrap/cache以下全てのディレクトリフォルダを777に設定する
chmod 777 bootstrap/cache -R
トップページのみ参照ができたが、配下が依然404エラー
コメントのご指摘を元にapache側に問題があると調査。
最初はhttpd.conf自体が見つからず困惑。apache2の場合は、/etc/apache2/apache2.confが該当。
下記等を参照
httpd.confについて調べたのでまとめたよ
http://r7kamura.hatenablog.com/entry/20110222/1298371277
AllowOverrideの設定を変更するも404エラー
/etc/apache2/apache2.conf へ下記を追加しましたが、やはり404エラーとなります。AllowOverrideをAllにしました。
<Directory /var/www/html/project/public>
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
(その後、sudo service apache2 restart で再起動)
また、下記のサイトにて似たような事例があったため、public/.htaccessを変更してみたのですが、変わらず404エラーとなります。
teratailを検索していたところ、下記にヒントが有りました。
Laravel4のroutes.phpの設定でNot foundが表示される問題
https://teratail.com/questions/5920
以下、コメントより抜粋
「apache2.conf」とsites-enabledの設定ファイル、また、laravelのpublic配下にある.htaccessファイルの設定を全て確認しましたが、特におかしいと思われる記述が見当たりませんでした。
次に、mod_riwriteが有効になっているかどうか、次のコマンドを叩いたところ、
「ls /etc/apache2/mods-enabled/」
見事に、rewrite.loadが見当たりませんでしたので、「sudo a2enmod rewrite」でmod_rewriteを有効化しました。その後、無事にアクセスできることを確認しました。
sudo a2enmod rewriteを実行するも、依然404エラー
更に調べたところ、restartが必要だったので実行する。
下記を参照に対応
http://qiita.com/u-akihiro/items/c7a5bb38c34858d00c2a
まずはmod_rewriteが利用可能となっているかを確認する。
cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
使えることが確認できたらa2enmodというコマンドを実行する。
sudo a2enmod rewrite
a2enmodを実行すると以下の様なメッセージが出てくる。
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
忘れずにrestartしよう
sudo service apache2 restart
以上で、無事に接続できました。
自分のPC上では割りとすんなり環境構築ができていたのですが、人の環境だとなかなか難しいですね。
大変勉強になりました。
また、ご助言いただきました、natadyさん、aglkjgggさん ありがとうございました。
投稿2016/09/12 23:22
編集2016/09/13 03:04総合スコア53
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
0
LaravelではWebサーバのDocumentRoot
にpublicを指定する必要があります。
VirtualHostの場合の例.
<VirtualHost *:80> DocumentRoot "C:\xampp\htdocs\myblog/public" ServerName myblog.net </VirtualHost>
また、よくある問題としてHTTP 500が返ってくる場合は、
storage
とbootstrap/cache
ディレクトリのパーミションを適切に設定する必要があります。
※適切なパーミッションは忘れました。
777にすればとりあえず動作しますが、セキュリティの為公式のドキュメントを参照してください。
# storage以下全てのディレクトリフォルダを777に設定する chmod 777 storage -R # bootstrap/cache以下全てのディレクトリフォルダを777に設定する chmod 777 bootstrap/cache -R
投稿2016/09/09 03:27
編集2016/09/09 03:31総合スコア769
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
2016/09/09 03:31
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
解決済
NotionAPIでページコンテンツを取得したい
回答1
クリップ1
更新
2023/05/31
Q&A
解決済
PHPで「+」を文字列として認識させる方法(暗号化と復号)
回答2
クリップ1
更新
2023/06/01
Q&A
解決済
spring bootで新規登録機能を作成したい。
回答1
クリップ0
更新
2023/06/02
Q&A
解決済
Ajaxでフォームの内容をPHPに渡してPDFを作成し文字列を引き渡し、受け取った文字列をjavascriptでPDF化したい
回答2
クリップ0
更新
2023/06/02
Q&A
解決済
勤務時間のオリジナル関数を作りたい。
回答1
クリップ0
更新
2023/05/23
意見交換
受付中
いくつかのメソッドの大項目としてのコメントアウトをどう書くか
回答3
クリップ1
更新
2023/06/04
Q&A
解決済
VS CodeでTypeScript×Express.jsのAPIをWebPackの開発サーバーで実行できるようにしたい。
回答1
クリップ0
更新
2023/06/01
Q&A
解決済
Python tkinterでボタンが表示されません。
回答1
クリップ0
更新
2023/05/30
同じタグがついた質問を見る
LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。
Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。
PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。