php - 如何安全地更改 PHP session.save_path 权限以允许内置服务器工作
问题描述
我已经安装了yii2并尝试使用 PHP 内置服务器运行./yii serve
. 当我打开时http://localhost:8080
,出现以下权限错误:
PHP 警告 – yii\base\ErrorException session_start(): open(/var/lib/php/sessions/sess_t1462ivbhhq79igqjp6b4fekth, O_RDWR) failed: Permission denied (13)
在它在 Apache 上运行的同一台机器上的其他应用程序上,我启动phpinfo()
并发现路径/var/lib/php/sessions
设置为session.save_path
.
为了解决权限问题,我尝试运行sudo ./yii serve
并且运行良好。
现在,我关心我的开发系统的安全性,有时我会将其暴露在 Internet 上,以便为我的客户访问当前开发的应用程序提供服务。我不知道我继续运行应用程序的天气,sudo
还是有更好的方法来更改/var/lib/php/sessions
权限以允许 cli 中的 phpphp -S
访问它?
解决方案
我已执行以下操作以通过 PHP cli 将保存会话路径更改为另一个可访问的路径:
- 从终端
php --ini
获取配置文件列表,我的意思是加载配置文件条目以指定加载php.ini
文件的路径。就我而言,它是/etc/php/7.2/cli/php.ini
。 - 使用任何可以作为 sudo 运行的文本编辑器,就我而言,我使用了kate,我打开了指定的
php.ini
文件并搜索:session.save_path
php.ini 的条目并取消注释它,然后将路径更改为我家中的路径。就我而言,我将其设置为/home/myuser/tmp/sessions
. 保存文件。
现在./yii serve
可以正常工作,无需 sudo 也无需更改 Apache 的 php.ini 的任何设置。
推荐阅读
- image - 如何在博客中将桌面上的图像与移动设备中的图像对齐?
- javascript - ES6 默认值 - 帮助理解概念
- treeview - 在 Vaadin Flow / 14 TreeGrid 组件中使用节点图标
- javascript - 使用 axios.CancelToken 后如何进行异步调用?
- php - 无法与主机 smtp.mailtrap.io 建立连接:stream_socket_client():使用 SENDGRID 发送邮件时
- reactjs - 当屏幕重新聚焦时清除倒数计时器
- python - geo_point 映射 python 和 StreamSets 因 Elasticsearch 失败
- sql - SQL:结果集中的完整标识符
- javascript - 搜索会导致错误,例如 Uncaught (in promise) TypeError: Cannot read property 'Search' of undefined at eval (data-source.js:14)
- python - Selenium Python:无法单击按钮