laravel 4 队列(SQS 和 Elasticbeanstalk)无法打开 stream:Permission 被拒绝
laravel 4 queue(SQS and Elasticbeanstalk) failed to open stream:Permission denied
我的队列任务如下
$message = "message";
Queue::push(function($job) use ($message)
{
echo "user of queue runnur : ".get_current_user();
Log::info($data,$message.get_current_user());
$job->delete();
});
然而,我得到了
user of queue runnur : webapp
The stream or file "/var/app/current/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
日志目录被myself.And修改为775 我测试了非队列方式写入,可以写入成功
文件权限
-rwxrwxrwx 1 webapp webapp 1269117 Jun 24 07:59 laravel.log
为什么会这样?
您的队列运行器 运行 在与网站或网络服务器不同的用户上。 laravel.log 文件由网络服务器或 php 进程创建。队列处理程序 运行 作为不同的用户,并尝试写入日志文件,如您的 Log::info()
调用所示。但是,此用户无权访问其他用户创建的文件。
你的队列运行器是如何配置的?
有两种情况会导致laravel 4队列无法打开流异常,
1.Permission问题,queue runner没有file/directory读取权限或write.Plz更改文件权限为775.
2.Wrong path.The 脚本的当前目录 运行 在网站入口点(index.php)和队列运行器之间完全不同。
为了调试,请推送此作业并运行查看相关信息
Queue::push(function($job) use ($message)
{
echo "user = ".get_current_user();
echo "current directory = " . getcwd();
$job->delete();
});
在我的情况下,它是由情况2引起的,网站的当前目录是/rootOfProject/public,队列运行器是/rootOfProject
我的队列任务如下
$message = "message";
Queue::push(function($job) use ($message)
{
echo "user of queue runnur : ".get_current_user();
Log::info($data,$message.get_current_user());
$job->delete();
});
然而,我得到了
user of queue runnur : webapp
The stream or file "/var/app/current/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
日志目录被myself.And修改为775 我测试了非队列方式写入,可以写入成功
文件权限
-rwxrwxrwx 1 webapp webapp 1269117 Jun 24 07:59 laravel.log
为什么会这样?
您的队列运行器 运行 在与网站或网络服务器不同的用户上。 laravel.log 文件由网络服务器或 php 进程创建。队列处理程序 运行 作为不同的用户,并尝试写入日志文件,如您的 Log::info()
调用所示。但是,此用户无权访问其他用户创建的文件。
你的队列运行器是如何配置的?
有两种情况会导致laravel 4队列无法打开流异常,
1.Permission问题,queue runner没有file/directory读取权限或write.Plz更改文件权限为775.
2.Wrong path.The 脚本的当前目录 运行 在网站入口点(index.php)和队列运行器之间完全不同。
为了调试,请推送此作业并运行查看相关信息
Queue::push(function($job) use ($message)
{
echo "user = ".get_current_user();
echo "current directory = " . getcwd();
$job->delete();
});
在我的情况下,它是由情况2引起的,网站的当前目录是/rootOfProject/public,队列运行器是/rootOfProject