Ключ ремесленника php: генерировать --force - все еще НЕ писать в .env - PullRequest
0 голосов
/ 09 октября 2019

Я создаю скрипт для запуска проекта Laravel 5.8

#Install dependencies
composer self-update
composer install

# create .env base on .env.example
cat .env.example > .env

#permission
chmod -R 777 .env

#create the key
php artisan key:generate --force

cat .env

#set permission
chmod -R 777 bootstrap/ vendor/ storage/ public/

sleep 1

#clear cache
php artisan config:cache
php artisan cache:clear
composer dump-autoload
php artisan clear-compiled

php artisan key:generate

python -mwebbrowser http://127.0.0.1:8000
php artisan serve

Эта строка не работает.

php artisan key:generate --force

Посмотрите на мой .env

 ⚡️  bheng  cat .env                                                                             
APP_ENV=local                                                                                  
APP_URL=http://bheng.test/                                                                     
APP_DEBUG=true                                                                                 
APP_KEY=***                                                                                    
CODE=###                                                                                       

#---------------------------------------------- DATABASE                                       

DB_CONNECTION=mysql                                                                            
DB_HOST=4.2.2.1                                                                            
DB_DATABASE=b                                                                          
DB_USERNAME=dev                                                                                
DB_PASSWORD=123
DB_PORT=3306

#---------------------------------------------- EMAIL

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_FROM=8863b0c62fbcff
MAIL_PASSWORD=***

#----------------------------------------------

GOOGLE_WEB_API_KEY=***

Обновление

⚡️  bheng  php artisan key:generate --force
Application key set successfully.
⚡️  bheng  cat .env | grep KEY
APP_KEY=***                                                                                    
GOOGLE_WEB_API_KEY=***                                                                         
⚡️  bheng  ls
Procfile           composer.lock      package-lock.json  readme.md          storage/
app/               config/            package.json       resources/         vendor/
artisan            database/          phpspec.yml        routes/
bootstrap/         gulpfile.js        phpunit.xml        server.php
composer.json      npm-debug.log      public/            start.sh*
⚡️  bheng  L
total 1584
drwx------+ 25 bheng  staff   800B Oct 13 13:55 ../
-rw-r--r--   1 bheng  staff   796B Oct 13 13:55 .env.example
-rw-r--r--   1 bheng  staff    61B Oct 13 13:55 .gitattributes
-rw-r--r--   1 bheng  staff   556B Oct 13 13:55 .gitignore
drwxr-xr-x   7 bheng  staff   224B Oct 13 13:55 .idea/
-rw-r--r--   1 bheng  staff    43B Oct 13 13:55 Procfile
drwxr-xr-x  26 bheng  staff   832B Oct 13 13:55 app/
-rw-r--r--   1 bheng  staff   1.6K Oct 13 13:55 artisan
drwxr-xr-x   7 bheng  staff   224B Oct 13 13:55 bootstrap/
-rw-r--r--   1 bheng  staff   1.3K Oct 13 13:55 composer.json
-rw-r--r--   1 bheng  staff   200K Oct 13 13:55 composer.lock
drwxr-xr-x  17 bheng  staff   544B Oct 13 13:55 config/
drwxr-xr-x   6 bheng  staff   192B Oct 13 13:55 database/
-rw-r--r--   1 bheng  staff   1.6K Oct 13 13:55 gulpfile.js
-rw-r--r--   1 bheng  staff    13K Oct 13 13:55 npm-debug.log
-rw-r--r--   1 bheng  staff   515K Oct 13 13:55 package-lock.json
-rw-r--r--   1 bheng  staff   1.0K Oct 13 13:55 package.json
-rw-r--r--   1 bheng  staff    87B Oct 13 13:55 phpspec.yml
-rw-r--r--   1 bheng  staff   777B Oct 13 13:55 phpunit.xml
drwxr-xr-x  20 bheng  staff   640B Oct 13 13:55 public/
-rw-r--r--   1 bheng  staff   2.5K Oct 13 13:55 readme.md
drwxr-xr-x   5 bheng  staff   160B Oct 13 13:55 resources/
drwxr-xr-x   5 bheng  staff   160B Oct 13 13:55 routes/
-rw-r--r--   1 bheng  staff   560B Oct 13 13:55 server.php
-rwxr-xr-x   1 bheng  staff   957B Oct 13 13:55 start.sh*
drwxr-xr-x   5 bheng  staff   160B Oct 13 13:55 storage/
drwxr-xr-x  12 bheng  staff   384B Oct 13 13:55 .git/
drwxr-xr-x  45 bheng  staff   1.4K Oct 13 13:55 vendor/
drwxr-xr-x  30 bheng  staff   960B Oct 13 13:55 ./
-rwxr-xr-x   1 bheng  staff   796B Oct 13 13:56 .env*
⚡️  bheng

Ответы [ 4 ]

7 голосов
/ 16 октября 2019

Номер 1 : Никогда не устанавливайте разрешение 777 по любой причине, особенно для веб-приложений. Вы не хотите, чтобы внешний скрипт управлял вашим веб-сервером.

Номер 2 : поскольку проблема с добавлением сгенерированного ключа не легко отследить, вы можете получить сгенерированный ключ втерминал с php artisan key:generate --show и вручную переопределите его в .env.

. Вы можете написать такой скрипт, который поможет создать и переопределить значение APP_KEY вашего файла .env:

#!/bin/sh

while IFS="" read -r p || [ -n "$p" ]
do
  if printf '%s' "$p" | grep -Eq '^APP_KEY'; then
    key=$(php artisan key:generate --show)
    echo "APP_KEY=$key" >> .envv
    printf '%s\n' "APP_KEY generated and set"
  else
    #printf '%s\n' "$p"
    echo "$p" >> .envv
  fi

done < .env

cp .envv .env
rm .envv
  • if printf '%s' "$p" | grep -Eq '^APP_KEY'; then проверяет, начинается ли строка с APP_KEY
  • , затем генерирует ключ, добавляет его во временный файл .envv
  • ... затем переопределяет .env файл с временным файлом

PS: я не специалист по сценариям bash / sh / dash, так что это может не сказаться на производительности, а просто подтвердить идею. Первоначальная проблема, которую я подозреваю, связана с изменением прав доступа к файлам

0 голосов
/ 18 октября 2019

Мне кажется, проблема в том, что у вашей группы нет прав на запись.

-rwxr-xr-x   1 bheng  staff   796B Oct 13 13:56 .env*

То, что можно идентифицировать по отсутствующей секунде w на -rwxrwxrwx, кстати, представляющей разрешения для владельца, группы и других (в таком порядке)

Итак, вместо chmod 777 я предлагаю:

chmod g+rwx . -R (это даст рекурсивное разрешение на чтение, запись и выполнение для группы в текущем каталоге)

Попробуйте, надеюсь, это поможет:)

0 голосов
/ 13 октября 2019

Действия по воспроизведению ключа приложения:

  1. Создание файла .env без строки APP_KEY=.
  2. Выполнение php artisan key:generate.
  3. Выполнениеgrep APP_KEY .env - Он не будет генерировать вывод.

Надеюсь, это сработает для вас. Спасибо

0 голосов
/ 09 октября 2019

если вы не можете использовать ключ: сгенерировать, может быть, это поможет вам

$router->get('/key', function() {
    return str_random(32);
});

и, пожалуйста, не используйте 777, читайте больше: Как настроить права доступа к файлам для Laravel?

...