Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

環境構築

publicフォルダにシンボリックリンクを貼る

前回、画像アップロードのプログラムを作成しました。

ファイルアップロード機能(改修版)

しかしデプロイするとアップロードした画像が表示されなくなりました。

今回はその対策をエントリーします。

 

問題

さくらレンタルサーバのウェブサイトのルート(公開フォルダ)は

/home/{アカウント}/www

になります。

Laravelのウェブサイトのルートは

/home/{アカウント}/{Laravelプロジェクト}/public

です。

なのでlaravelの/public/index.phpのパスを変更して/wwwにデータを入れて利用していました。

しかし、画像アップロード機能のプログラム作成時に問題が発生しました。

アップロードした画像が表示されなくなったのです。

 

原因

原因は画像アップロードディレクトリを

/home/{アカウント}/{Laravelプロジェクト}/public/images

にしていたからです。

ここはウェブルートじゃないので当たり前ですよね。

本番サーバ(さくら)でのウェブルートは/wwwです。

画像のアップロード先を

/home/{アカウント}/www/images

にしてもよかったのですが、なんかスマートじゃない。

 

改修内容

実体ファイルを/home/{アカウント}/wwwにしてシンボリックリンクを作成。

作成するシンボリックリンクは/home/{アカウント}/{Laravelプロジェクト}/publicになります。

 

ディレクトリ構成

┝ www
  ┝ index.php
  ┝ web.config
  ┝ .htaccess
  :
┝ {laravle_project}
  ┝ public ←シンボリックリンク(実体ファイルは../www)
  ┝ app
  ┝ resources
  :

 

構文

【Linux】

ls -s {実体ファイル}[半角スペース]{シンボリックリンク}
ln -s /home/{アカウント}/www /home/{アカウント}/{Laravelプロジェクト}/public

 
【Windows】

mklink /D {シンボリックリンク}[半角スペース]{実体ファイル}
> mklink /D C:\xampp\htdocs\{Laravelプロジェクト}\public C:\xampp\htodcs\www
【注意】
シンボリックリンクは管理者権限でないと実行できません。
コマンドプロンプトを開くときは右クリックで「管理者として実行」を選択して開いてください。

 

その他のやり方

ララジャパン【Laravel解説サイト】によると以下のようにしてもOKみたいです。

require __DIR__.'/../{laravel_project}/bootstrap/autoload.php';
$app = require_once __DIR__.'/../ {laravel_project} /bootstrap/app.php';

//以下追加
$app->bind('path.public', function() {
  return __DIR__;
});

以上です。

 

-環境構築