В каталоге «/ workspace / storage / logs» нет существующего каталога, и его невозможно создать: файловая система только для чтения - PullRequest
0 голосов
/ 12 октября 2019

Я развернул приложение Laravel в gcloud, выполнив следующие действия:

php artisan key:generate --show

php artisan cache:clear

php artisan config:clear

php artisan view:clear

php artisan route:clear

gcloud beta app deploy --no-cache

У меня есть следующее в composer.json:

        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize",
            "chmod -R 777 bootstrap\/cache",
            "chmod -R 777 storage\/logs",
            "php artisan cache:clear"
        ]

app.yaml гласит следующее:

runtime: php72

runtime_config:
  document_root: public

env_variables:
  # Put production environment variables here.
  APP_LOG: errorlog
  APP_KEY: base64:js8r1FFX55XhAcXVjU71plGXGTCt4YrauCqXFHjlsO4=
  APP_STORAGE: /tmp
  VIEW_COMPILED_PATH: /tmp
  CACHE_DRIVER: cookie
  SESSION_DRIVER: cookie
  ## Set these environment variables according to your CloudSQL configuration.
  CLOUDSQL_USER: root
  CLOUDSQL_PASSWORD: secret
  CLOUD_SQL_DSN: "mysql:dbname=cbt-sql;unix_socket=/cloudsql/theta-byte-123456:asia-southeast1:cbt-sql"

Однако я получаю следующую ошибку. Я не уверен, что я делаю неправильно.

(1/1) UnexpectedValueException
There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system

in StreamHandler.php line 172
at StreamHandler->createDir()
in StreamHandler.php line 100
at StreamHandler->write(array('message' => 'There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', 'context' => array('exception' => object(UnexpectedValueException)), 'level' => 400, 'level_name' => 'ERROR', 'channel' => 'production', 'datetime' => object(DateTimeImmutable), 'extra' => array(), 'formatted' => '[2019-10-12 06:24:56] production.ERROR: There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system {"exception":"[object] (UnexpectedValueException(code: 0): There is no existing directory at \\"/workspace/storage/logs\\" and its not buildable: Read-only file system at /srv/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:172)[stacktrace]#0 /srv/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php(100): Monolog\\\\Handler\\\\StreamHandler->createDir()#1 /srv/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(120): Monolog\\\\Handler\\\\StreamHandler->write(Array)#2 /srv/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(42): Monolog\\\\Handler\\\\RotatingFileHandler->write(Array)#3 /srv/vendor/monolog/monolog/src/Monolog/Logger.php(323): Monolog\\\\Handler\\\\AbstractProcessingHandler->handle(Array)#4 /srv/vendor/monolog/monolog/src/Monolog/Logger.php(538): Monolog\\\\Logger->addRecord(400, \'There is no exi...\', Array)#5 /srv/vendor/laravel/framework/src/Illuminate/Log/Logger.php(176): Monolog\\\\Logger->error(\'There is no exi...\', Array)#6 /srv/vendor/laravel/framework/src/Illuminate/Log/Logger.php(87): Illuminate\\\\Log\\\\Logger->writeLog(\'error\', \'There is no exi...\', Array)#7 /srv/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(539): Illuminate\\\\Log\\\\Logger->error(\'There is no exi...\', Array)#8 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(118): Illuminate\\\\Log\\\\LogManager->error(\'There is no exi...\', Array)#9 /srv/app/Exceptions/Handler.php(37): Illuminate\\\\Foundation\\\\Exceptions\\\\Handler->report(Object(UnexpectedValueException))#10 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(314): App\\\\Exceptions\\\\Handler->report(Object(UnexpectedValueException))#11 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(118): Illuminate\\\\Foundation\\\\Http\\\\Kernel->reportException(Object(UnexpectedValueException))#12 /srv/public/index.php(59): Illuminate\\\\Foundation\\\\Http\\\\Kernel->handle(Object(Illuminate\\\\Http\\\\Request))#13 {main}"} '))
in RotatingFileHandler.php line 120
at RotatingFileHandler->write(array('message' => 'There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', 'context' => array('exception' => object(UnexpectedValueException)), 'level' => 400, 'level_name' => 'ERROR', 'channel' => 'production', 'datetime' => object(DateTimeImmutable), 'extra' => array(), 'formatted' => '[2019-10-12 06:24:56] production.ERROR: There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system {"exception":"[object] (UnexpectedValueException(code: 0): There is no existing directory at \\"/workspace/storage/logs\\" and its not buildable: Read-only file system at /srv/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:172)[stacktrace]#0 /srv/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php(100): Monolog\\\\Handler\\\\StreamHandler->createDir()#1 /srv/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(120): Monolog\\\\Handler\\\\StreamHandler->write(Array)#2 /srv/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(42): Monolog\\\\Handler\\\\RotatingFileHandler->write(Array)#3 /srv/vendor/monolog/monolog/src/Monolog/Logger.php(323): Monolog\\\\Handler\\\\AbstractProcessingHandler->handle(Array)#4 /srv/vendor/monolog/monolog/src/Monolog/Logger.php(538): Monolog\\\\Logger->addRecord(400, \'There is no exi...\', Array)#5 /srv/vendor/laravel/framework/src/Illuminate/Log/Logger.php(176): Monolog\\\\Logger->error(\'There is no exi...\', Array)#6 /srv/vendor/laravel/framework/src/Illuminate/Log/Logger.php(87): Illuminate\\\\Log\\\\Logger->writeLog(\'error\', \'There is no exi...\', Array)#7 /srv/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(539): Illuminate\\\\Log\\\\Logger->error(\'There is no exi...\', Array)#8 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(118): Illuminate\\\\Log\\\\LogManager->error(\'There is no exi...\', Array)#9 /srv/app/Exceptions/Handler.php(37): Illuminate\\\\Foundation\\\\Exceptions\\\\Handler->report(Object(UnexpectedValueException))#10 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(314): App\\\\Exceptions\\\\Handler->report(Object(UnexpectedValueException))#11 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(118): Illuminate\\\\Foundation\\\\Http\\\\Kernel->reportException(Object(UnexpectedValueException))#12 /srv/public/index.php(59): Illuminate\\\\Foundation\\\\Http\\\\Kernel->handle(Object(Illuminate\\\\Http\\\\Request))#13 {main}"} '))
in AbstractProcessingHandler.php line 42
at AbstractProcessingHandler->handle(array('message' => 'There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', 'context' => array('exception' => object(UnexpectedValueException)), 'level' => 400, 'level_name' => 'ERROR', 'channel' => 'production', 'datetime' => object(DateTimeImmutable), 'extra' => array(), 'formatted' => '[2019-10-12 06:24:56] production.ERROR: There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system {"exception":"[object] (UnexpectedValueException(code: 0): There is no existing directory at \\"/workspace/storage/logs\\" and its not buildable: Read-only file system at /srv/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:172)[stacktrace]#0 /srv/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php(100): Monolog\\\\Handler\\\\StreamHandler->createDir()#1 /srv/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(120): Monolog\\\\Handler\\\\StreamHandler->write(Array)#2 /srv/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(42): Monolog\\\\Handler\\\\RotatingFileHandler->write(Array)#3 /srv/vendor/monolog/monolog/src/Monolog/Logger.php(323): Monolog\\\\Handler\\\\AbstractProcessingHandler->handle(Array)#4 /srv/vendor/monolog/monolog/src/Monolog/Logger.php(538): Monolog\\\\Logger->addRecord(400, \'There is no exi...\', Array)#5 /srv/vendor/laravel/framework/src/Illuminate/Log/Logger.php(176): Monolog\\\\Logger->error(\'There is no exi...\', Array)#6 /srv/vendor/laravel/framework/src/Illuminate/Log/Logger.php(87): Illuminate\\\\Log\\\\Logger->writeLog(\'error\', \'There is no exi...\', Array)#7 /srv/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(539): Illuminate\\\\Log\\\\Logger->error(\'There is no exi...\', Array)#8 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(118): Illuminate\\\\Log\\\\LogManager->error(\'There is no exi...\', Array)#9 /srv/app/Exceptions/Handler.php(37): Illuminate\\\\Foundation\\\\Exceptions\\\\Handler->report(Object(UnexpectedValueException))#10 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(314): App\\\\Exceptions\\\\Handler->report(Object(UnexpectedValueException))#11 /srv/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(118): Illuminate\\\\Foundation\\\\Http\\\\Kernel->reportException(Object(UnexpectedValueException))#12 /srv/public/index.php(59): Illuminate\\\\Foundation\\\\Http\\\\Kernel->handle(Object(Illuminate\\\\Http\\\\Request))#13 {main}"} '))
in Logger.php line 323
at Logger->addRecord(400, 'There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', array('exception' => object(UnexpectedValueException)))
in Logger.php line 538
at Logger->error('There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', array('exception' => object(UnexpectedValueException)))
in Logger.php line 176
at Logger->writeLog('error', 'There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', array('exception' => object(UnexpectedValueException)))
in Logger.php line 87
at Logger->error('There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', array('exception' => object(UnexpectedValueException)))
in LogManager.php line 539
at LogManager->error('There is no existing directory at "/workspace/storage/logs" and its not buildable: Read-only file system', array('exception' => object(UnexpectedValueException)))
in Handler.php line 118
at Handler->report(object(UnexpectedValueException))
in Handler.php line 37
at Handler->report(object(UnexpectedValueException))
in HandleExceptions.php line 92
at HandleExceptions->handleException(object(UnexpectedValueException))

Ответы [ 2 ]

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

Кажется, что ваше приложение пытается записывать логи в каталог storage/logs.

Это недопустимо, поскольку в среде Google App Engine 7.2 все каталоги доступны только для чтения, кроме каталога /tmp. Проверьте эту страницу :

Среда выполнения включает в себя доступный для записи каталог /tmp со всеми остальными каталогами, имеющими доступ только для чтения. Запись в /tmp занимает системную память. Для получения дополнительной информации см. tempnam () и sys_get_temp_dir () support .

Я также обнаружил эту проблему с Github , которая предлагает решить эту проблему:

Попробуйте добавить это к своему app.yaml в env_variables:

env_variables:  
  # ...   
  LOG_CHANNEL: stderr 

В качестве альтернативы, следуйте инструкциям далее в руководстве для интеграции с ведением журнала Stackdriver. ,Любой из них должен решить вашу проблему.

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

Мне удалось решить эту проблему, выполнив шаги в разделе Настройка ведения журнала Stackdriver и отчетов об ошибках на https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard

...