Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复错误:无法打开laravel.log?_Php_Laravel - Fatal编程技术网

Php 如何修复错误:无法打开laravel.log?

Php 如何修复错误:无法打开laravel.log?,php,laravel,Php,Laravel,事实上,我在拉威尔是个新手,我正试图创建我的第一个项目。由于某些原因,我一直遇到这个错误(我甚至还没有开始编码) 我已经读到这与权限有关,但是chmod-R 775存储根本没有帮助 不要将777用于实时服务器上的目录,但在您自己的计算机上,有时我们需要执行775以上的操作,因为 chmod -R 775 storage 意味着 如果您的Web服务器不是以流浪者身份运行,它将无法写入,因此您有2个选项: chmod -R 777 storage 或者将组更改为您的Web服务器用户,假设它是ww

事实上,我在拉威尔是个新手,我正试图创建我的第一个项目。由于某些原因,我一直遇到这个错误(我甚至还没有开始编码)

我已经读到这与权限有关,但是
chmod-R 775存储
根本没有帮助


不要将777用于实时服务器上的目录,但在您自己的计算机上,有时我们需要执行775以上的操作,因为

chmod -R 775 storage
意味着

如果您的Web服务器不是以流浪者身份运行,它将无法写入,因此您有2个选项:

chmod -R 777 storage
或者将组更改为您的Web服务器用户,假设它是
www-data

chown -R vagrant:www-data storage

要解决此问题,您需要将目录的所有权更改为Web服务器使用的unix用户

  • 离开虚拟机
  • 使用控制台,转到您的同步文件夹(vagrant)
  • sudo chown-R$用户:www数据存储
  • chmod-R 775存储
  • 尽管我使用VM用户在VM中创建了项目,但该文件夹属于真实计算机中的用户;所以,当你试图

    现在它开始工作了

    感谢所有帮助我解决这件事的人

    编辑:

    实际上,它仍然不起作用,它仍然给了我一个“拒绝许可”的问题

    以下是我所做的,我修改了我的流浪汉档案如下:

    config.vm.synced_folder "./app","/var/www/", create:true,
    :owner => "vagrant",
    :group => "www-data",
    :mount_options => ["dmode=775","fmode=664"]
    

    您需要调整
    存储
    引导/缓存
    的权限

    • cd
      进入您的Laravel项目
    • sudo chmod-R 755存储器
    • sudo chmod-R 755引导/缓存
    如果755不行,你可以试试777。但777并不安全

    根据web服务器的设置方式,您可以更具体地使用权限,并且只将权限授予web服务器用户。谷歌
    WEB服务器名称Laravel文件权限
    了解更多信息


    在撰写本文时,这是针对Laravel 5.4的,切勿将目录设置为777。您应该更改目录所有权。因此,将您当前登录的用户设置为所有者,将webserver用户(www-data,apache,…)设置为组。 您可以尝试以下方法:

    sudo chown -R $USER:www-data storage
    sudo chown -R $USER:www-data bootstrap/cache
    
    chmod -R 775 storage
    chmod -R 775 bootstrap/cache
    
    然后,要设置目录权限,请尝试以下操作:

    sudo chown -R $USER:www-data storage
    sudo chown -R $USER:www-data bootstrap/cache
    
    chmod -R 775 storage
    chmod -R 775 bootstrap/cache
    
    更新:

    Web服务器用户和组取决于您的Web服务器和操作系统。要了解您的web服务器用户和组是什么,请使用以下命令。对于nginx使用:

    ps aux|grep nginx|grep-v grep

    对于apache使用:


    ps aux | egrep'(apache | httpd)

    此解决方案专门针对laravel 5.5

    您必须更改对几个文件夹的权限: chmod-R-777存储/日志 chmod-R-777存储/框架 对于上述文件夹,775或765不适用于我的项目

    chmod -R 775 bootstrap/cache 
    

    此外,项目文件夹的所有权应如下所示(当前用户):(web服务器用户)

    我不太想将文件夹权限更改为777。下面是我如何着手解决这个问题的

    首先,我更改了在本地机器上运行web服务器的用户(我运行nginx,但原则适用于所有地方):

    重新加载页面时,我发现
    www-data
    就是用户(在环境部分下)。我还发现我正在运行PHP7.1。我继续更改用户:

    $> sudo vim /etc/php/7.0/fpm/pool.d/www.conf 
    #Look for www-data or the following variables: user, group, listen.user, listen.group.
    
    最后,我为文件夹授予了以下权限:

    sudo chmod -R 775 ./storage/
    
    现在,我通过使用一个简单的:

    ls -al
    
    例如,如果您将服务器和php fpm用户设置为您自己,并且文件夹归root所有,那么您将不断遇到此问题。如果您以root用户身份执行sudo laravel new,则可能会发生这种情况。在这种情况下,请确保在项目上使用递归的
    chown
    命令来更改
    user:group
    设置。在大多数默认情况下,
    www-data
    是服务器和php的主要设置,在这种情况下,需要确保文件夹不超出
    www-data
    的范围


    我的项目设置在我的主目录中。在Ubuntu 16.04和Laravel 5.5上。

    有这个问题,发现了这个问题,解决了这个问题


    可以通过禁用Linux来修复此错误

    检查是否已启用

    芝麻

    你试试

    setEnforce0

    试试这个

  • cd/var/www/html
  • 设置强制执行0
  • 服务httpd重启

  • 运行以下命令,您可以在命令开始时添加
    sudo
    ,具体取决于您的系统:

    chmod -R 775 storage/framework
    chmod -R 775 storage/logs
    chmod -R 775 bootstrap/cache 
    
    它也可能是SELinux。(Centos,RedHat)

    确定终端上SElinux的状态:

    $ sestatus
    
    sudo chmod -R 777 storage
    
    如果状态为enabled,则写入命令以禁用SElinux

    $ setenforce Permissive
    
    或者您可以执行此命令


    $sudo setenforce 0

    对于Laravel上下文中的所有Centos 7用户,无需禁用Selinux,只需运行以下命令:

    yum install policycoreutils-python -y # might not be necessary, try the below first
    
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" # add a new httpd read write content to sellinux for the specific folder, -m for modify
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?" # same as the above for b/cache
    
    restorecon -Rv /var/www/html/ # this command is very important to, it's like a restart to apply the new rules
    
    最后,确保您的主机、IP和虚拟主机都可以正确地进行远程访问


    Selinux旨在限制对根用户的访问,因此只能访问必要的内容,至少在一般情况下是这样的,这是额外的安全性,禁用它不是一个好的做法,有很多链接可以学习Selinux,但在这种情况下甚至不需要它。

    添加到
    composer.json

    "scripts": {
        "post-install-cmd": [
              "chgrp -R www-data storage bootstrap/cache",
              "chmod -R ug+rwx storage bootstrap/cache"
         ]
    }
    
    对于此错误,请在安装composer后执行以下操作:

    异常处理程序中出错:无法打开流或文件“/var/www/laravel/app/storage/logs/laravel.log”:无法打开流:在/var/www/laravel/bootstrap/compiled.php:8423中的权限被拒绝

    在终端中使用此命令:

    $ sestatus
    
    sudo chmod -R 777 storage
    
    如果使用cmd

    sudo chown -R $USER:www-data storage
    sudo chown -R $USER:www-data bootstrap/cache
    
    如果您使用GUI

    首先转到项目,右键单击存储并检查属性,然后转到“权限”选项卡

    使用下面的代码更改权限

    sudo chmod -R 777 storage
    
    那么您的文件属性可能是

    然后检查您的设置并执行laravel命令,它将工作:)

    chcon -R -t httpd_sys_rw_content_t storage
    
    chcon -R -t httpd_sys_content_t $SITE_PATH
    
    chcon -R -t httpd_sys_rw_content_t $SITE_PATH
    
    $ sudo chmod -R 777 storage 
    
    $ sudo service apache2 restart
    
    HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
    
    sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/
    sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/
    
    cd /var/www/html/
    
    sudo chmod -R 777 storage/
    sudo chmod -R 777 bootstrap/cache/
    
    php artisan route:clear
    php artisan config:clear
    php artisan cache:clear
    
    sudo nano /etc/php/7.x/fpm/pool.d/www.conf
    
    user = www-data
    group = www-data
    
    user = vagrant
    group = vagrant
    
    sudo service php7.x-fpm restart
    
    user nginx nginx;
    
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
    user = nginx
    group = nginx
    
    sudo chmod nginx:nginx -R .
    
    chcon -R -t httpd_sys_content_t .
    chcon -R -t httpd_sys_rw_content_t .
    
    cd PATH_TO_LARAVEL_PROJECT
    
    sudo chown -R $USER:_www storage
    chmod -R 775 storage
    
    sudo chown -R $USER:_www bootstrap/cache
    chmod -R 775 bootstrap/cache