51歳からのプログラミング　備忘　XREA様の無料サーバーに　ローカル Laravel のプロジェクトをアップロード 未完編集中

Laravelを導入するだけで丸１日潰れた。でも、先輩方がサイトで記録を残してくれているので、こんな僕でもなんとか独学で！参考にするのなら、他のサイトがおすすめ！

#参考サイト様

下記様、大変にお世話になりました。ありがとうございます！

[tanidaiz.com様](https://tanidaiz.com/composer%E3%82%92%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BCssh%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-%E4%B8%81%E5%AF%A7%E3%81%AB%E8%AA%AC/)
[@haessal様](https://qiita.com/haessal/items/789f8cce5027d0b8d1c2)
[@t_mitarai様](https://blog.t-mitarai.com/php/framework/laravel/install-laravel8-to-xrea/)

#はじめに
無料レンタルサーバーは　[XREA様](https://www.xrea.com/)
方法は、XREAに、
・　[teraTarm](https://ja.osdn.net/projects/ttssh2/)を使って、ローカルで作成したLaravelをアップロードする方法
　　XREAのファイルマネージャーでもZIPをあげられる

#SSH登録と許可

|　　|説明|
|---|----|
|XREA無料版の登録|XREAにログインして無料版を申し込む|
|SSH登録|alue-domain GMO管理画面・コントロールパネル <br>↓<br>サーバー／XREA<br>↓<br>コントロールパネル／ウェブ<br>↓<br> FTP設定で「SSH登録」を選択|
|SSH許可|XREA<br>↓<br>サイト設定<br>↓<br>ツール/セキュリティ<br>↓<br>SSH接続IP許可|

#SSH接続
teraTermの場合なら
teraTerm起動
・　ドメイン（IPアドレス）
・　ユーザー（FTP設定のアカウント）
・　パスフレーズ（FTPのパスワード）
を入力

|　　|説明|
|---|----|
|ドメイン|alue-domain GMO<br>↓<br>コントロールパネル<br>↓<br>アカウント@サーバー/「IPアドレス XXX.XXX.XXX.XXX」のIPアドレス|
|UserとPass|XREA<br>↓<br>サイト設定<br>↓<br>FTP設定」<br>↓<br>アカウントとパスワード|

#composerの導入
説明はこちら-> [composer installation](https://getcomposer.org/download/)

XREAでは、phpコマンドはCLI版を使うそうです。
導入するlaravelで用いるPHPのversionを確認しましょう。
XREAのPHP、laravelのPHP、コマンドに使うPHP($ php72cli)の各PHP versionは揃えましょう！

teraTarmで、root直下(/virtual/UserAccount/)に入って、下記を実行するんだコレ！

```
$ php72cli -r "copy('...
$ php72cli -r "if(...
$ php72cli composer-setup.php
$ php72cli -r "unlink(...
```

###composerを起動
そして、composerをインストした階層で下記を実行するんだコレ！

```
$ php72cli composer.phar
// ↓
// COMPOSERのかっこいいのが表示される
```
composer.jsonもいれとこか

```
$ php72cli composer.phar init
```


#Laravelの導入

##ダウンロード
[参考にさせていただきました](https://qiita.com/t_mitarai/items/0146905d81c3db7981cb)

/virtual/UserAccount/laravel　に移動して

```
php72cli -d register_argc_argv=1 ~/composer.phar create-project lar
avel/laravel myProject "6.0.2" --prefer-dist --no-dev
```
(version laravel 6.0.2)

myProject下に移動して

```
npm install
```
そしたら次節のkey:generateから以降を

myProject下で

```
php72cli artisan migrate
```

##ローカルで開発したlaravelをXREAにUPロード！
・　laravelファイルをZIPなどで圧縮
・　アップローダーでZipをアップ！
　　teraTarmならクリックドロップ！
　　XREAのファイルマネージャーなら、ZIP形式でアップロードを選択！
　（これだとアップロード時に解凍してくれる！）
・　不要なファイル(phpunit)を削除！

teraTarm で zip を解凍するのは

```
$ unzip myProject.zip
```

そしたら次に　myProject　に移動してから
artisan key:generate します

```:virtual/UserAccount/laravel/myProject/
// myprojectに入って以下を行います

$ php72cli artisan key:generate
```

同じところで

```
php72cli artisan migrate
```
これでエラーが出たら修正

そしたら
myProject/publicを、public_html（DocumentRoot）に移動します。
/virtual/UserAccount/public_html -- index.php
　　　　　　　　　　　　　　　|- .htaccess
　　　　　　　　　　　　　　　|- favicon.ico
　　　　　　　　　　　　　　　|- robots.txt
って感じにします。
そしたらindex.phpを変更します。
このままだと、index.php の require ./autoload.php で require されずに 500 エラーになります。

##index.htmlの変更
/public_html/index.php を以下のように修正

```
// ↓　require __DIR__.'/../vendor/autoload.php'; 
require '/virtual/UserAccount/laravel/myProject/vendor/autoload.php';

// ↓　$app = require_once __DIR__.'/../bootstrap/app.php';
$app = require_once '/virtual/UserAccount/laravel/myProject/bootstrap/app.php';
```


これで大丈夫かな？
`http://UserAcount.xxx/`
でアクセス！


#Error
##Whoops, looks like something went wrong
phpのバージョンが違っているので、表示できません、っていうエラー？。

```
Whoops, looks like something went wrong.
(1/1) FatalThrowableError
Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE)
in Translator.php line 91
```

![011128.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399000/24c18067-b7eb-dc9e-49b6-e88a6259bee5.jpeg)

XREAで使っているPHPバージョンと、導入したlaravelで使ってるPHPバージョンがあってなかった、ってことでした。

ローカルのlaravel XREAのlaravel XREAのphp teraTermのphp　の各レベルは合わせるのが吉かな？

##laravel導入時に、phpunit系のエラーが出て中断

```
php72cli -d register_argc_argv=1 composer.phar create-project --no-dev --prefer-dist laravel/.....
```
--no-devでインストールしないように指定したんだけれど、

```
Your requirments could not be resolvel to an installable set of packages

Problem 1
-phpunit/phpunit ...
...

```
というレッドエラーが出た。
すべてphpunitエラーなので、今回はインストールで--no-devは指定せず、エラー発生後にディレクトリーからphpunitを削除して、再インストールすることにしたよ。

削除方法はいろいろあるけれど、今回は、
`XARE - サイト設定 - FTP設定 - ファイルマネージャー - laravelホルダ - phpunit 削除`
で、他のファイルを確認しながら削除してみました。

再インストールね！

```
$ php72cli -d register_argc_argv=1 composer.phar update
```

`http://www.UserDomain/myProject`
無事に
![011128-2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399000/d46514fe-a086-1db8-4e8b-574a25e9a7f5.jpeg)

##導入したLaravelファイルが見当たらない！　No such file or directory
これは迷いました！

調べてたら、転送する時の文字コードが違うのでは（エンコード）？とか出てきましたが、最終的にLaravelプロジェクトの名前がよくなかったよう。当初は `laravel01` というプロジェクト名をアップしたら、実際にファイルはアップされているのですが、teraTarmでは認識されませんでした。プロジェクト名を `laravelapp` とか、数字の入ってないのに変更したらOKだった！

##DocumentRootにindex.phpを配置　500Error
composerでlaravelを導入すると、vedorディレクトリはcomposerと同じ階層に作成されるのだけれど、laravelを他のディレクトリに移したり、vendorディレクトリを移動させると、エラーになってしまう。初歩的なミスをしてました。
これに関しては↓を参照

##vendorフォルダがない

composerをインストールするとvendorフォルダがなかった。
php72cli composer.phar updateでvendorを作ってもうまくいかなかった。
なのでローカルで作成したLaravelのvendorを入れてみた。置く場所は

```
/virtual/UserAccount/laravel/myProject/vendor
```

でlaravelのmyProject/publi/index.phpのindex.phpを書き換えます。

```
// ↓　require __DIR__.'/../vendor/autoload.php'; 
require '/virtual/UserAccount/laravel/myProject/vendor/autoload.php';

// ↓　$app = require_once __DIR__.'/../bootstrap/app.php';
$app = require_once '/virtual/UserAccount/laravel/myProject/bootstrap/app.php';
```

下記調査
Symfony\Component\Debug\Exception\FatalThrowableError
Class 'App\Oldcat' not found

#Xreaのドメイン削除と再登録
管理画面からドメインを削除する
↓
[契約サーバーがありません]
↓
最初の登録メールにある[ドメインとサーバーを利用する]
↓
[サーバー利用登録・購入]
↓
[Xrea(エクスリア)の利用・申し込み]
↓
[Xrea(無料)を取得]
↓
[無料アカウントを作成]
↓
[Xreaアカウントの取得・作成画面はこちら]