相关疑难解决方法(0)

如何为Laravel 5(和其他人)设置文件权限

我正在使用拥有所有者的Apache Web Server _www:_www.我永远不知道文件权限的最佳做法是什么,例如当我创建新的Laravel 5项目时.

Laravel 5要求/storage文件夹可写.我找到了许多不同的方法来使它工作,我通常最终以777递归方式使用chmod.我知道这不是最好的主意.

官方文件说:

Laravel可能需要配置一些权限:Web服务器中的文件夹, storagevendor要求Web服务器进行写访问.

这是否意味着Web服务器本身也需要访问storagevendor文件夹本身或仅需要访问其当前内容?

我认为更好的是改变所有者而不是权限.我递归地更改了所有Laravel的文件权限_www:_www,这使得网站正常工作,就像我将chmod更改为777.问题是,现在我的文本编辑器每次要保存任何文件时都要求我输入密码,如果我尝试在Finder中更改任何内容,就会发生同样的情况,例如复制文件.

解决这些问题的正确方法是什么?

  1. 更改 chmod
  2. 更改文件的所有者以匹配Web服务器的所有者,并可能将文本编辑器(和Finder?)设置为跳过要求输入密码,或者让它们使用 sudo
  3. 更改Web服务器的所有者以匹配os用户(我不知道后果)
  4. 还有别的

php apache file-permissions laravel laravel-5

186
推荐指数
11
解决办法
25万
查看次数

使用laravel5.6自定义(动态)日志文件名

使用laravel 5.5,我们可以访问configureMonologUsing()$ app中的方法,这样就可以在bootstrap/app.php中实现这样的功能:

$app->configureMonologUsing(function (Monolog\Logger $monolog) {
    $processUser = posix_getpwuid(posix_geteuid());
    $processName= $processUser['name'];

    $filename = storage_path('logs/laravel-' . php_sapi_name() . '-' . $processName . '.log');
    $handler = new Monolog\Handler\RotatingFileHandler($filename);
    $monolog->pushHandler($handler);
});
Run Code Online (Sandbox Code Playgroud)

当您的应用程序可以从具有不同用户(需要)和文件轮换的不同上下文(例如CLI/HTTP)调用时,执行此操作非常有用.执行此操作可防止在HTTP用户创建日志文件之前写入错误,然后CLI会尝试在其中添加内容,反之亦然.

处理这个是非常棘手或不安全的,因为它涉及能够在可能尚不存在的文件上设置写权限.

另外,通过上下文分隔日志非常方便,因为它们通常没什么共同之处,因此可以更容易地在它们之间进行搜索.

不幸的是,使用laravel 5.6不再可能采用这种方式,而且我还没有找到一种方法来透明地执行所有基于文件的日志记录.

谢谢

php laravel-5.6

3
推荐指数
2
解决办法
3147
查看次数

'无法打开流:权限被拒绝'错误 - Laravel 5.1

我在我的Ubuntu 14.04和我的Laravel 5.1应用程序上遇到了问题.

当我的应用想要记录时,我收到此错误:

Uncaught UnexpectedValueException:无法打开流或文件storage/logs/l:无法打开流:/ var/www/releases/20160426/booking_server/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler中的权限被拒绝. php:87 \n堆栈跟踪:\n#0 ........它继续

我找到了这个解决方案:

sudo php artisan cache:clear 

sudo chmod -R 777 storage 

sudo composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

但问题是它只是暂时的.这个问题每天都会出现,我总是要做同样的事情.

我能做些什么来阻止这种情况发生?

PD:我有一个每日日志,但如果可能的话我想保持这种方式.

php ubuntu laravel ubuntu-14.04 laravel-5

1
推荐指数
1
解决办法
2207
查看次数

在 Laravel 5.7 升级后使用 configureMonologUsing - Supervisor Logging Permission

我正在尝试将我的 Laravel 5.5 项目升级到 5.7。我使用主管,在我configureMonologUsing()用来生成日志之前,但显然随着 5.6 升级,它贬值了。我在 L5.5 中的完整代码是:在 bootstrap/app.php 中:

$app->configureMonologUsing( function( Monolog\Logger $monolog) {
    $processUser = posix_getpwuid( posix_geteuid() );
    $processName= $processUser[ 'name' ];

    $filename = storage_path( 'logs/laravel-' . php_sapi_name() . '-' . $processName . '.log' );
    $handler = new Monolog\Handler\RotatingFileHandler( $filename );
    $monolog->pushHandler( $handler );
});
Run Code Online (Sandbox Code Playgroud)

它正在生成各种记录器,例如(这很方便):

  • laravel-cli-root-{date},

  • laravel-cli-ubuntu-{date},

  • laravel-cli-www-data-{date},

  • laravel-fpm-fcgi-www-data-{date} 等...

但是,它在升级指南中说,所以我不能再使用configureMonologUsing了:

configureMonologUsing方法

如果您使用 configureMonologUsing 方法为您的应用程序自定义 Monolog 实例,您现在应该创建一个自定义日志通道。有关如何创建自定义通道的更多信息,请查看完整的日志记录文档

我无法弄清楚如何使用日志记录通道实现相同的目标。如何利用 Monolog Channel 编写 laravel/storage/logs 文件夹?

php logging supervisord laravel laravel-5.7

0
推荐指数
1
解决办法
1908
查看次数

Laravel:无法打开流权限被拒绝

尝试寻找可靠的答案,但目前还没有。我当前的设置如下:

  • 本地ubuntu服务器
  • 泊坞窗
  • Laravel 应用程序

当 storage/ 和 bootstrap/ 的所有权设置为 www-data:www-data (chown) 时,应用程序运行良好。我遇到的唯一问题是,当我尝试运行composer或artisan命令时,它会给我一个错误:

生成优化的自动加载文件 Illuminate\Foundation\ComposerScripts::postAutoloadDump @php artisan package:discover --ansi UnexpectedValueException 无法打开流或文件“/home/amplr/portal.amplr.be/storage/logs/laravel.log”在追加模式下:无法打开流:权限被拒绝

当我将所有权设置回 ubuntu 用户时,作曲家和工匠工作,但应用程序抛出权限错误。完成作曲家命令后,我必须返回 www-data:www-data 。

我究竟做错了什么?

laravel composer-php docker laravel-artisan

-5
推荐指数
1
解决办法
7883
查看次数