永久解决系统重启后Unix Socket权限问题
每次重启系统都需要手动执行 sudo chown test:test .0-fpm.sock 来调整Unix Socket权限? 这确实令人烦恼。本文提供几种方法,让系统重启后自动设置正确的权限,无需手动干预。
首先,我们需要明确 php7.0-fpm.sock 文件的创建者和运行该文件的用户。通常,该文件由PHP-FPM服务创建,其用户通常是 www-data 或其他类似用户。 修改文件所有权的原因通常是其他应用需要访问该Socket。 更好的解决方案是直接使用拥有适当权限的用户运行这些应用。
以下几种方法可以解决这个问题:
方法一:修改PHP-FPM配置文件
这是最推荐的方法。直接修改PHP-FPM的配置文件,让PHP-FPM服务以目标用户启动。
-
找到配置文件: PHP-FPM配置文件通常位于 /etc/php/7.0/fpm/pool.d/www.conf (版本号可能不同,请根据实际情况调整)。
-
修改 user 和 group 参数: 找到 user 和 group 参数,将它们的值修改为 test:
user = test group = test
登录后复制 -
重启PHP-FPM服务: 应用更改,重启PHP-FPM服务:
sudo systemctl restart php7.0-fpm # 或使用 service php7.0-fpm restart
登录后复制
方法二:使用系统服务启动脚本
如果无法修改PHP-FPM配置文件,可以使用系统服务启动脚本。 这需要谨慎操作,错误配置可能导致系统不稳定。
-
创建启动脚本: 创建一个脚本文件,例如 /etc/systemd/system/set-php-fpm-socket-permissions.service (或其他合适的路径和文件名),内容如下:
[Unit] Description=Set permissions for php7.0-fpm.sock After=php7.0-fpm.service [Service] Type=oneshot ExecStart=/bin/chown test:test /path/to/php7.0-fpm.sock # 将 /path/to/ 替换为实际路径 RemainAfterExit=yes [Install] WantedBy=multi-user.target
登录后复制 -
启用并启动服务:
sudo systemctl enable set-php-fpm-socket-permissions.service sudo systemctl start set-php-fpm-socket-permissions.service
登录后复制
方法三:使用rc.local (不推荐)
/etc/rc.local 方法已过时,不推荐使用,因为它在许多现代Linux发行版中已被弃用。
选择最适合你系统和环境的方法。 方法一(修改PHP-FPM配置文件)是最简洁、最安全的选择。 方法二(使用systemd服务)更适合无法修改PHP-FPM配置文件的情况,但需要对systemd有一定了解。 切记替换 /path/to/php7.0-fpm.sock 为 php7.0-fpm.sock 文件的实际路径。 重启系统后,验证权限是否已正确设置。
以上就是如何在系统重启后自动设置unixsocket的权限?的详细内容,更多请关注php中文网其它相关文章!