Vic*_*ico 3 php heroku laravel
我正在尝试在 heroku 上运行我的应用程序,但对于某些请求(只有 POST、GET 工作正常),我的 Ajax POST 请求出现以下错误:
Error: Request failed with status code 419
Run Code Online (Sandbox Code Playgroud)
当我检查 heroku 日志时,我收到此错误:
production.ERROR: file_put_contents(/app/storage/framework/sessions/r9yIHf3WlKIzROWGPlVOk59rwr6tVyAeCLuJ9wWx):
failed to open stream: No such file or directory
{"userId":1,"email":"xxx@gmail.com","exception":"[object] (ErrorException(code: 0):
file_put_contents(/app/storage/framework/sessions/r9yIHf3WlKIzROWGPlVOk59rwr6tVyAeCLuJ9wWx): failed to open stream: No such file or directory at /app/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122)
Run Code Online (Sandbox Code Playgroud)
我已经检查过,该目录/storage/framework/sessions已存在。
我试过运行chmod 777 -R/ (但仍然是这个问题)
我尝试了以下命令:
php artisan optimize
php artisan config:clear
php artisan cache:clear
php artisan config:cache
php artisan optimize:clear
Run Code Online (Sandbox Code Playgroud)
Atouch /app/storage/framework/sessions/r9yIHf3WlKIzROWGPlVOk59rwr6tVyAeCLuJ9wWx也不起作用。
我试图删除存储文件夹并重新创建它。
您知道可能会出现什么问题吗?
Heroku 的文件系统是临时的,并且会在您的 dyno 重新启动时消失 - 即至少每天一次(由于 Heroku 会自动重新启动)以及每次部署或配置更改后。
此外,heroku run bash将您连接到一个全新的独立服务器,因此如果您在其中创建/修改文件/文件夹/权限,一旦您关闭会话,它就会立即消失。对实际的网络服务器实例没有影响。
这意味着您不应该依赖文件系统来处理任何打算永久保存的事情——例如,没有文件上传(它们应该放在像 AWS S3 这样的地方)。另外,如果您使用多个 dyno,将会话数据存储为文件将意味着该会话仅存在于其中一个 dyno 上 - 在下一次浏览时,很有可能它会消失,因为用户已经点击了不同的动态。
解决方案?使用不同的驱动程序存储会话。我更喜欢 Redis 驱动程序,但如果您想稍微降低复杂性,可以使用数据库驱动程序。
| 归档时间: |
|
| 查看次数: |
1224 次 |
| 最近记录: |