HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2018/03/14

Raspberry Piに Laravel 5.5 PHP 7.0フレームワークで Webサーバを構築する方法 Raspberry Piに Laravel 5.5 PHP 7.0フレームワークで Webサーバを構築する方法

(ラズパイで Hello Laravel 5.5 + PHP7.0サーバを構築する、Apache2で PHP-FPMを有効にする方法)

Tags: [Raspberry Pi], [電子工作]





● Raspberry Pi 3 Model Bを遂に購入

 Raspberry Pi3 Model B RPI2 RPI3

 大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
 以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)
 ※ 2017/08/16から Raspbian OSは Raspbian Jessieから Raspbian Stretchに変わりました。
 ※ 2019/06/20から Raspbian OSは Raspbian Stretchから Raspbian Busterに変わりました。

Download Raspbian for Raspberry Pi

ちなみに、歴代のバージョンと名称は
Debianコードネーム年月備考(参考)Ubuntuでの該当名称
Debian 11Bullseye2021/08/14~2021/11からラズパイにリリースFocal Fossa 20.04 LTS ?
Debian 10Buster2019/06/20~2019/06からラズパイ4対応Bionic 18.04 LTS
Debian 9Stretch2017/08/16~2018/03からラズパイ3B+対応Xenial 16.04 LTS
Debian 8Jessie2015~2016/02からラズパイ3対応Trusty 14.04 LTS
Debian 7Wheezy2013~2016
Debian 6.0Squeeze2011~2014
Debian GNU/Linux 5.0Lenny2009~2012


● Laravel 7.0での構築手順

 Laravel 7.0を使いたい場合

2020/03/01
Raspberry Pi Busterに Laravel 7 PHP 7.3のフレームワークで Webサーバを構築する方法
Raspberry Pi Busterに Laravel 7 PHP 7.3のフレームワークで Webサーバを構築する方法

  ラズパイで Hello Laravel 7 + PHP7.3 PHPサーバを構築する、PHP7.3インストール方法も解説


●ラズパイで PHPフレームワークの Laravelサーバを構築する方法

 使用した Raspbian OSのバージョン

Release date: 2018-03-13
2018-03-13-raspbian-stretch.img
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.3 (stretch)
Release:        9.3
Codename:       stretch

Release date: 2017-11-29
2017-11-29-raspbian-stretch.img
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.1 (stretch)
Release:        9.1
Codename:       stretch


● Laravelとは?

 Laravelとは Symfonyをベースにした PHPフレームワーク。

ウェブ職人のためのPHPフレームワーク。

 必要になりそうなので自分専用の実験環境を作成します。


● Laravelのバージョンと必要な PHPのバージョンの関係

Laravelのバージョン時期必要な PHPのバージョン
Laravel v5.42017年1月PHP 5.6.4以上
Laravel v5.52017年8月 LTSPHP 7.0以上
Laravel v5.62018年2月PHP 7.1.3以上
 Laravel 5.5は PHP 7.0以降を
 Laravel 5.6は PHP 7.1.3以降を必要とします。

 それで、ラズパイの Raspbian Stretch OSは 2018年 3月現在 PHP7.0に対応しています。
 なので Laravel 5.5で Laravel環境を構築します。



● Laravel 5.5

Laravel 5.5

Server Requirements
PHP >= 7.0.0
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension

5.5/composer.json
    "require": {
        "php": ">=7.0",
        "ext-mbstring": "*",
        "ext-openssl": "*",
        "doctrine/inflector": "~1.1",
        "erusev/parsedown": "~1.7",
        "league/flysystem": "^1.0.8",
        "monolog/monolog": "~1.12",
        "mtdowling/cron-expression": "~1.0",
        "nesbot/carbon": "^1.24.1",
        "psr/container": "~1.0",
        "psr/simple-cache": "^1.0",
        "ramsey/uuid": "~3.0",
        "swiftmailer/swiftmailer": "~6.0",
        "symfony/console": "~3.3",
        "symfony/debug": "~3.3",
        "symfony/finder": "~3.3",
        "symfony/http-foundation": "~3.3",
        "symfony/http-kernel": "~3.3",
        "symfony/process": "~3.3",
        "symfony/routing": "~3.3",
        "symfony/var-dumper": "~3.3",
        "tijsverkoyen/css-to-inline-styles": "~2.2",
        "vlucas/phpdotenv": "~2.2"
    },


● Laravelに必要なパッケージ

 PHP
PHP is a popular general-purpose scripting language

 Composer
Composer - Dependency Manager for PHP

 MySQLまたは MariaDBデータベース
 MySQL データベース(2008年2月に Sun Microsystemsが MySQL ABを買収し、2010年1月に Oracleが Sun Microsystemsを買収した。)
MySQL

 MariaDB creates open source database(MySQLの派生版)
MariaDB creates open source database

 HTTP Serverは任意(PHPビルトインサーバ機能でも動かせる)
PHPのビルトインサーバで動かしたい

 Apacheまたは nginx HTTP Server

 Apache HTTP Server
Apache HTTP Server

 nginx HTTP Server
nginx HTTP Server


● Laravel 5.5での構築手順

 PHP 7.0のインストール
 Apache 2 Web Serverのインストール
 MySQL DBのインストール
 Composerのインストール

● PHP 7.0のインストール
# お決まりの sudo apt-get update
sudo apt-get update

# 不要
# sudo apt-get -y install git
# sudo apt-get -y install zip unzip

# PHP 7.1のパッケージの存在を確認
apt-cache search php7.1
# (何も出てこない)

# PHP 7.0のパッケージの存在を確認
apt-cache search php7.0
# (色々出てくる)
# php7.0 - server-side, HTML-embedded scripting language (metapackage)

# PHP 7.0の Ctype PHP Extensionの存在を確認
apt-cache search php7.0-ctype
# php7.0-common - documentation, examples and common module for PHP

# PHP 7.0の JSON PHP Extensionの存在を確認
apt-cache search php7.0-json
# php7.0-json - JSON module for PHP

# PHP 7.0のインストール
sudo apt-get -y install php7.0

# PHPのバージョンの確認
php -v
# PHP 7.0.27-0+deb9u1 (cli) (built: Jan  5 2018 13:51:52) ( NTS )
# Copyright (c) 1997-2017 The PHP Group
# Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
#     with Zend OPcache v7.0.27-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

# Laravelに必要な PHPの拡張機能のインストール
sudo apt-get -y install php7.0-common php7.0-mbstring php7.0-xml
sudo apt-get -y install php7.0-mysql php7.0-zip php7.0-gd
#
sudo apt-get -y install php7.0-curl php7.0-json
sudo apt-get -y install mcrypt php7.0-mcrypt

● PHP 7.0のインストールを一行で一括で行なう場合
# お決まりの sudo apt-get update
sudo apt-get update

# PHP 7.0のインストールを一行で一括で行なう場合
sudo apt-get -y install php7.0 php7.0-common php7.0-mbstring php7.0-xml php7.0-mysql php7.0-zip php7.0-gd php7.0-curl php7.0-json mcrypt php7.0-mcrypt

# PHPのバージョンの確認
php -v
# Apache 2 Web Serverのインストール
sudo apt-get -y install apache2

# Apache 2 Web Serverのバージョンの確認
apache2 -v
# Server version: Apache/2.4.25 (Raspbian)
# Server built:   2017-09-19T18:58:57

# MySQLのインストール
sudo apt-get -y install mysql-server

# MySQLのバージョンの確認
mysqld -V
# mysqld  Ver 10.1.23-MariaDB-9+deb9u1 for debian-linux-gnueabihf on armv7l (Raspbian 9.0)
mysql -V
# mysql  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnueabihf (armv7l) using readline 5.2

# Composerのインストール
sudo apt-get -y install composer

# Composerのバージョンの確認
composer -V
# Composer version 1.2.2 2016-11-03 17:43:15

# pi@raspberrypi:~ $ composer -v
#    ______
#   / ____/___  ____ ___  ____  ____  ________  _____
#  / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
# / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
# \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
#                     /_/
# Composer version 1.2.2 2016-11-03 17:43:15

# Composerを使って Laravelをインストールする
# /var/www/laravelに作成する
sudo mkdir /var/www/laravel
# 本来であれば chownでファイル権限のユーザーで許可を与えるが、自分だけの開発環境なので chmodで安易に済ませている。
sudo chmod 777 /var/www/laravel
composer create-project --prefer-dist laravel/laravel /var/www/laravel "v5.5.*"

# Installing laravel/laravel (v5.5.28)
#   - Installing laravel/laravel (v5.5.28)
#     Downloading: 100%

# Created project in /var/www/laravel
# You made a reference to a non-existent script @php -r "file_exists('.env') || copy('.env.example', '.env');"
# You made a reference to a non-existent script @php artisan package:discover
# You made a reference to a non-existent script @php artisan key:generate

# Laravelのバージョンを確認する
cd /var/www/laravel/
php artisan --version
# Laravel Framework 5.5.39

# 上のYou made a reference to a non-existent script~のメッセージが出るので実行する
cd /var/www/laravel/
php -r "file_exists('.env') || copy('.env.example', '.env');"

php artisan package:discover
# Discovered Package: fideloper/proxy
# Discovered Package: laravel/tinker
# Package manifest generated successfully.

php artisan key:generate
# Application key [base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=] set successfully.


# apache2の mod_rewriteモジュールを a2enmodコマンドで有効化する
# これを有効化しないと /のルートディレクトリ以外にアクセスすると 404 Not Foundになる
# (間違った使い方だが /index.php/hogeとするとアクセスできる)
sudo a2enmod rewrite

# apache2の mod_rewriteモジュールの有効化を確認する
ls -l /etc/apache2/mods-enabled/ | grep rewrite
# lrwxrwxrwx 1 root root 30 Jul  6 15:08 rewrite.load -> ../mods-available/rewrit .load

# 000-default.confの DocumentRoot設定を書き換える
# 000-default.confの DocumentRoot設定の下に AllowOverride All設定を追加する
sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
#       DocumentRoot /var/www/html
        DocumentRoot /var/www/laravel/public

        <Directory "/var/www/laravel/public">
          AllowOverride All
        </Directory>

# apache2の設定ファイルを書き換えたので apache2を再起動する
sudo systemctl restart apache2

# failed to open stream: Permission deniedになるので 757にする
# UnexpectedValueException
# The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
# 本来であれば chownでファイル権限のユーザーで許可を与えるが、自分だけの開発環境なので chmodで安易に済ませている。
# sudo chown -R www-data:www-data /var/www/laravel/storage
sudo chmod -R 757 /var/www/laravel/storage

 パソコンの Webブラウザでラズパイの IPアドレスにアクセスする。
http://192.168.1.123

 Bonjourを入れている場合は(sudo apt-get install avahi-daemon)
http://raspberrypi.local

 白い画面に灰色の文字で下記が出れば成功。
Laravel
DOCUMENTATION LARACASTS NEWS FORGE GITHUB
・ラズパイで PHPフレームワークの Laravelサーバを構築する方法
ラズパイで PHPフレームワークの Laravelサーバを構築する方法



● phpinfoでサーバの PHPの状態を確認する方法

cd /var/www/laravel/public
nano /var/www/laravel/public/phpinfo.php
<?php
  phpinfo();
?>
sudo echo '<?php phpinfo(); ?>' > /var/www/laravel/public/phpinfo.php

# Server API: Apache 2.0 Handler

・phpinfo() - Server API: Apache 2.0 Handler
phpinfo() - Server API: Apache 2.0 Handler




● Apache 2サーバで php-fpmを使う場合

# php7.0-fpmのインストール
sudo apt-get -y install php7.0-fpm
# NOTICE: Not enabling PHP 7.0 FPM by default.
# NOTICE: To enable PHP 7.0 FPM in Apache2 do:
# NOTICE: a2enmod proxy_fcgi setenvif
# NOTICE: a2enconf php7.0-fpm
# NOTICE: You are seeing this message because you have apache2 package installed.

# php7.0-fpmの有効化
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
# Enabling conf php7.0-fpm.
# To activate the new configuration, you need to run:
#   systemctl reload apache2

# PHPの www.confファイルを書き換える
sudo nano /etc/php/7.0/fpm/pool.d/www.conf

; listen = /run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000

# php-fpmのサービスを再起動する
sudo service php7.0-fpm stop
sudo service php7.0-fpm start

# apache2の 000-default.confファイルを書き換える
sudo nano /etc/apache2/sites-available/000-default.conf

#       DocumentRoot /var/www/html
        DocumentRoot /var/www/laravel/public

        <FilesMatch "\.php$">
            SetHandler "proxy:fcgi://127.0.0.1:9000/"
        </FilesMatch>

# apache2の設定を変更したので apache2を再起動する
sudo systemctl restart apache2

 phpinfo()で下記になっていれば Apache 2の php-fpm化が成功
# Server API: FPM/FastCGI

 通常は下記(php-fpmが動いていない)
# Server API: Apache 2.0 Handler



● Laravel 5.5のサンプル

 とりあえず、何か簡単に動かしてみる。

/var/www/laravel/routes
nano web.php
Route::get('/', function () {
    return view('welcome');
});

Route::get('hoge', function () {
    return "ほげ";
});

pi@raspberrypi:/var/www/laravel $ php artisan route:list
+--------+----------+----------+------+---------+--------------+
| Domain | Method   | URI      | Name | Action  | Middleware   |
+--------+----------+----------+------+---------+--------------+
|        | GET|HEAD | /        |      | Closure | web          |
|        | GET|HEAD | api/user |      | Closure | api,auth:api |
|        | GET|HEAD | hoge     |      | Closure | web          |
+--------+----------+----------+------+---------+--------------+

 パソコンの Webブラウザでラズパイの IPアドレスの hoge URLにアクセスする。
http://192.168.1.123/hoge

 ブラウザに「ほげ」と出れば成功。

Not Found
The requested URL /hoge was not found on this server.
 404 Not Foundになる場合は
 ・mod_rewriteモジュールの有効化
 ・000-default.confファイルの書き換え内容
 を確認する。

● mod_rewriteモジュールが無効の場合
pi@raspberrypi:/var/www/laravel $ ls -l /etc/apache2/mods-enabled/ | grep rewrite
(何も出ない)

 ※この場合でも http://192.168.1.123/index.php/hogeでアクセスすれば「ほげ」と出る。ただし、Laravel的には間違った使用方法。

● mod_rewriteモジュールが有効の場合
pi@raspberrypi:/var/www/laravel $ ls -l /etc/apache2/mods-enabled/ | grep rewrite
lrwxrwxrwx 1 root root 30 Jul 6 15:08 rewrite.load -> ../mods-available/rewrit .load
 ↑
 rewrite.loadを表示する。

● mod_rewriteモジュールを有効化するコマンド
sudo a2enmod rewrite

# apache2を再起動する
sudo systemctl restart apache2

● mod_rewriteモジュールを無効化するコマンド
sudo a2dismod rewrite

# apache2を再起動する
sudo systemctl restart apache2


● Laravelのコントローラを専用の artisanコマンドで作成する

cd /var/www/laravel
php artisan make:controller TestController

./app/Http/Controllers/TestController.php
 ファイルが作成される。

/var/www/laravel
./app/Http/Controllers/TestController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    //
    public function test1()
    {
        return "テスト1";
    }
}

/var/www/laravel
./routes/web.php
Route::get('test/test1', 'TestController@test1');

http://192.168.1.123/test/test1
 ブラウザに「テスト1」と出れば成功。



● Laravelを実行すると The bootstrap/cache directory must be present and writable.

 The bootstrap/cache directory must be present and writableエラーが出る場合の解決方法。
(1/1) Exception
The bootstrap/cache directory must be present and writable.

php artisan cache:clear
 を実行する。



● Laravelで ZIPファイルをストリーミングで生成するライブラリ

 PHP ZIP Streaming Libraryを使う。
 The MIT License

maennchen/ZipStream-PHP
 PHP ZIP Streaming Library
 ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.

 ※ 最新版の V1.0は PHP 7.1を必要とするので Laravel 5.5 + PHP 7.0の場合は v0.5.2を使用する。
 ※ composerコマンドでバージョン指定をしなくても自動的に v0.5.2を組み込んでくれる。

 インストール方法。
cd /var/www/laravel
composer require maennchen/zipstream-php
 ※ バージョン指定をしなくても自動的に v0.5.2を組み込んでくれる。



● Laravelで AWSの S3にアクセスするライブラリ

composer require league/flysystem-aws-s3-v3

Class 'League\Flysystem\AwsS3v3\AwsS3Adapter' not found

pi@raspberrypi:/var/www/laravel $ composer require league/flysystem-aws-s3-v3
Using version ^1.0 for league/flysystem-aws-s3-v3
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mtdowling/jmespath.php (2.4.0)
    Downloading: 100%

Installation failed, reverting ./composer.json to its original content.
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details

PHP Warning:  proc_open(): fork failed - Cannot allocate memory in /usr/share/php/Symfony/Component/Console/Application.php on line 954

Warning: proc_open(): fork failed - Cannot allocate memory in /usr/share/php/Symfony/Component/Console/Application.php on line 954

  [ErrorException]
  proc_open(): fork failed - Cannot allocate memory


● composerで Cannot allocate memoryエラーが出てライブラリモジュールが組み込めない

 composerコマンドはメモリを馬鹿食いするらしいのでラズパイのメモリ 1GBでは不足する場合が有ります。
 ラズパイの不要なサービスを停止してメモリの空きを増やします。

#  VRAMのサイズを 64MBから 16MBに減らす
sudo bash -c "echo gpu_mem=16>> /boot/config.txt"
sudo sed -i -e "s/^gpu_mem=.*/gpu_mem=16/g" /boot/config.txt

# ラズパイの X Window Systemを無効化してメモリ使用量を減らす
sudo systemctl set-default multi-user.target
systemctl list-units | grep lightdm
sudo systemctl disable lightdm

# 緑色の ACT LEDの動作がハートビート(心臓の鼓動)になり一定間隔で点滅する。
# ハングした場合は点滅しなくなるので考えているのかハングしているのかの区別がつく。
sudo bash -c "echo dtparam=act_led_trigger=heartbeat >> /boot/config.txt"

# 再起動で設定を反映させる
sudo reboot

# MySQLを停止してメモリ使用量を減らす
sudo mysqld stop

 組み込めました。
pi@raspberrypi:/var/www/laravel $ composer require league/flysystem-aws-s3-v3
Using version ^1.0 for league/flysystem-aws-s3-v3
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mtdowling/jmespath.php (2.4.0)
    Loading from cache

  - Installing psr/http-message (1.0.1)
    Downloading: 100%

  - Installing guzzlehttp/psr7 (1.4.2)
    Downloading: 100%

  - Installing guzzlehttp/promises (v1.3.1)
    Downloading: 100%

  - Installing guzzlehttp/guzzle (6.3.3)
    Downloading: 100%

  - Installing aws/aws-sdk-php (3.62.9)
    Downloading: 100%

  - Installing league/flysystem-aws-s3-v3 (1.0.19)
    Downloading: 100%

aws/aws-sdk-php suggests installing doctrine/cache (To use the DoctrineCacheAdapter)
aws/aws-sdk-php suggests installing aws/aws-php-sns-message-validator (To validate incoming SNS notifications)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled services file has been removed.

pi@raspberrypi:/var/www/laravel $ composer info | grep aws
aws/aws-sdk-php                       3.62.9  AWS SDK for PHP - Use Amazon ...
league/flysystem-aws-s3-v3            1.0.19  Flysystem adapter for the AWS...



● Laravel 5.5のサンプル

https://github.com/bestmomo/laravel5-5-example
https://appdividend.com/2017/08/20/laravel-5-5-tutorial-example/



● Laravel 5.6での構築手順

 Laravel 5.6を使いたい場合
 Raspberry Pi Raspbian Stretch OSに PHP 7.1を追加する方法。

2018/03/14
Raspberry Piに Laravel 5.6 PHP 7.1のフレームワークで Webサーバを構築する方法
Raspberry Piに Laravel 5.6 PHP 7.1のフレームワークで Webサーバを構築する方法

  ラズパイで Hello Laravel 5.6 + PHP7.1 PHPサーバを構築する、PHP7.1インストール方法も解説


● sudo apt-get install php

sudo apt-get install php
 の場合は、php7.0以外に apache2等も自動的にインストールされます。
pi@raspberrypi:~ $ sudo apt-get install php

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 php-common
  php7.0 php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline
  ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom php-pear
  openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 php
  php-common php7.0 php7.0-cli php7.0-common php7.0-json php7.0-opcache
  php7.0-readline ssl-cert
0 upgraded, 19 newly installed, 0 to remove and 38 not upgraded.
Need to get 4,657 kB of archives.
After this operation, 17.4 MB of additional disk space will be used.
Do you want to continue? [Y/n]
pi@raspberrypi:~ $ php -v
PHP 7.0.27-0+deb9u1 (cli) (built: Jan  5 2018 13:51:52) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.27-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies


●ファイルのアクセス権限が無いので Laravel実行時にブラウザにエラー画面が出る
UnexpectedValueException
The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

ErrorException (E_WARNING)
file_put_contents(/var/www/laravel/storage/framework/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx): failed to open stream: Permission denied

sudo chmod 777 -R /var/www/laravel/storage/
 本来であれば chownでファイル権限のユーザーで許可を与えるが、自分だけの開発環境なので chmodで安易に済ませている。

pi@raspberrypi:~ $ ls -l /var/www/laravel/.env
-rw-r--r-- 1 pi pi 616 Mar 17 03:06 /var/www/laravel/.env

pi@raspberrypi:~ $ ls -l /var/www/laravel/storage/framework/sessions/
total 4
-rwxr-xr-x 1 www-data www-data 178 Mar 17 04:51 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

・Laravel UnexpectedValueException failed to open stream: Permission denied
Laravel UnexpectedValueException failed to open stream: Permission denied





Tags: [Raspberry Pi], [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る
Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る

  Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る

Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト
Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト

  Raspberry Piで APIモックサーバー JSON Serverを動かしてみるテスト

Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法

  ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築

Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法

  ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築

Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法

  ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)

Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法
Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

  Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法
Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法

  ラズパイ3で WordPressをインストールする方法

Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法
Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法

  ラズパイ3でローカルの Gitサーバを動かす方法。GitLabをインストールする方法

Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法
Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法

  Raspbian Jessieで Postfix Mail serverを Gmailの SMTPを中継サーバとして設定する方法

Gitでリモートにプッシュした内容を完全に無かった事にする方法
Gitでリモートにプッシュした内容を完全に無かった事にする方法

  いわゆる Gitでやらかした時に使える最強奥義 git reset --hard HEAD~; git push -f

Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法
Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法

  ラズパイに Bonjourサービスを入れて IPアドレスが分からなくてもホスト名で簡単に接続する方法

Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder
Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder

  DHCPで自動で IPアドレスが割り当てられる場合に、ワンボードマイコンの IPアドレスを調べる場合に便利

Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介
Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介

  対 DoS攻撃用の Apache2モジュール mod_evasive、mod_dosdetector、mod_limitipconn、fail2ban等の紹介

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ

  ラズパイゼロW ワイヤレスモデルを海外通販でサクッと簡単に個人輸入で入手。技適通過でも国内販売は常に品切れ

Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ
Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core
ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core

  オレンジパイはラズパイよりもコスパは良いが情報が無いので利用者側に一定のスキルが必要

Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64

  ラズパイを意識した別物製品、オレンジパイはラズパイよりもコスパが良い、でも情報が無い

Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2018 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_web_server_php_laravel_5_5/