【问题标题】:Laravel/PyroCMS Webserver and PHP Composer PermissionsLaravel/PyroCMS Web 服务器和 PHP Composer 权限
【发布时间】:2019-03-04 21:41:12
【问题描述】:

谁能帮我解决一些unix权限问题?我已经为此苦苦挣扎了好几个月,但还是不能完全正确。

我的 Web 服务器在 www-data 组中以 www-data 的身份运行,我以名为 finn 的用户身份使用 sudo 权限执行我的作曲家工作(但我绝对不使用 sudo composer :joy:)。

根据我的阅读,用户通常更容易拥有所有文件/目录,但用户位于 www-data 组中,因此我编写了一个 bash 脚本:

#!/bin/bash
sudo chown -R finn:www-data /srv/pyrocms
sudo usermod -a -G www-data finn
sudo find /srv/pyrocms -type f -exec chmod 664 {} \;
sudo find /srv/pyrocms -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

目标是什么 1.让我拥有一切 2.加我到www-data群 3.设置读/执行权限 4.将所有重要的storagebootstrap/cache的组更改为www-data 5. 授予我和www-data 组对storagebootstrap/cache 的读/写/执行权限

问题! 在以finn 用户身份执行composer update 之后,我经常遇到Web 服务器无法写入storage/streams/{site-slug}/cache/ 中的缓存文件的问题,并且它会抛出500 个错误。

我能做些什么来解决这个问题?

【问题讨论】:

    标签: laravel apache composer-php file-permissions pyrocms


    【解决方案1】:

    由于您已经拥有 sudo 权限并且正在使用 sudo,因此以 www-data 用户身份登录并以 www-data 身份执行所有任务可能会更容易。如果所有东西都归www-data所有,那么权限就不会有问题:

    sudo su -s /bin/bash www-data
    composer install
    

    另一种选择(可能更好)是创建专用用户(如www-finn)并始终以www-finn 运行PHP。如果您使用 php-fpm 运行 PHP 进程来处理 Web 请求,这应该很容易实现:

    [www-finn]  
    user = www-finn
    group = www-finn
    ...
    listen.owner = www-finn
    listen.group = www-finn
    

    www-data 添加到www-finn 组,以便网络服务器可以访问www-finn 文件。然后让 www-finn 成为您的网络应用的所有者:

    usermod -a -G www-finn www-data
    sudo chown -R www-finn:www-finn /srv/pyrocms
    

    【讨论】:

    • 这应该行不通。至少在我的服务器上,我无法使用类似的配置运行它。
    • 感谢 rob006!我看到你们和 Piterden 都有以我的用户身份运行 PHP-Fpm 的想法,所以我会考虑这样做!
    【解决方案2】:

    您应该从/home/finn/srv 文件夹和finn 下运行composer create-project pyrocms/pyrocms pyrocms,并且绝对不是sudo 用户(finn 可能是sudoer 或不是它都没有关系)。

    PHP-FPM 池配置:

    [finn]
    user = finn
    group = finn
    
    listen = /run/php/finn-fpm.sock
    listen.allowed_clients = 127.0.0.1
    
    listen.owner = www-data
    listen.group = www-data
    

    Nginx 主机配置:

    location ~ [^/]\.php(/|$) {
      fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
      fastcgi_pass      unix:/run/php/finn-fpm.sock;
      fastcgi_index     index.php;
      include           /etc/nginx/fastcgi_params;
    }
    

    那你finn unix 用户下的任何权限都不能更改,但如果有问题,就在finn 用户下运行next:

    find /home/finn/srv/pyrocms -type f -exec chmod 644 {} \;
    find /home/finn/srv/pyrocms -type d -exec chmod 755 {} \;
    chmod -R /home/finn/srv/pyrocms/storage 777
    chmod -R /home/finn/srv/pyrocms/bootstrap/cache 777
    chmod -R /home/finn/srv/pyrocms/public/app 777
    

    另外,请注意您只需要 sudo 来编辑 /etc 文件夹下的配置。

    【讨论】:

    • 谢谢皮特登!作为特权用户运行 PHP 是否有任何顾虑?为什么这些文件夹上必须是 777?既然让用户/组读/写就足够了,为什么世界还需要读/写/执行?
    • 不太明白您以特权用户身份运行 php 是什么意思。无论如何,您的 php-fpm 服务正在 root 下运行。
    • 哈,你能解释一下,为什么你的finn 组需要这些权限吗?我们只讨论finn 用户而不是组。另外,为什么你有 664 和 775?正确的权限应该是 640 和 750
    • 我已更改为使用 644 和 755,就像在您的示例中一样? finn 组可能不需要您说得对的那些权限
    • 不完全——我目前不使用 FPM。默认的 Apache 配置是使用 mod PHP7 所以我只是想?
    猜你喜欢
    • 2014-01-28
    • 2017-09-10
    • 2011-03-19
    • 2015-01-28
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多