Php “处没有现有目录”/“工作区/存储/日志”;而且它是不可构建的:只读文件系统

Php “处没有现有目录”/“工作区/存储/日志”;而且它是不可构建的:只读文件系统,php,laravel,logging,gcloud,Php,Laravel,Logging,Gcloud,我使用以下步骤在gcloud上部署了一个Laravel应用程序: php artisan密钥:生成--show php artisan缓存:清除 php artisan配置:清除 php artisan视图:清除 php工匠路线:清除 gcloud测试版应用程序部署--无缓存 我在composer.json中有以下内容: "post-install-cmd": [ "Illuminate\\Foundation\\ComposerScripts::post

我使用以下步骤在gcloud上部署了一个Laravel应用程序:

php artisan密钥:生成--show

php artisan缓存:清除

php artisan配置:清除

php artisan视图:清除

php工匠路线:清除

gcloud测试版应用程序部署--无缓存

我在
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))

您的应用程序似乎正在尝试在
存储/logs
目录中写入日志

这是不允许的,因为在Google App Engine 7.2环境中,除
/tmp
目录外,所有目录都是只读的。检查:

运行时包括一个可写的
/tmp
目录,所有其他目录都具有只读访问权限。写入
/tmp
会占用系统内存。有关详细信息,请参阅

我还发现了一个问题,建议通过以下方式解决:

尝试将其添加到
环境变量下的
app.yaml

env_variables:  
  # ...   
  LOG_CHANNEL: stderr 
或者, 按照中后面的说明进行集成 堆栈驱动程序日志记录。这两种方法都可以解决您的问题


我按照设置Stackdriver日志记录和错误报告中的步骤解决了这个问题,网址是

Great!我也有同样的问题。你的Laravel版本是什么?