从php脚本登录/var/log时权限被拒绝

从php脚本登录/var/log时权限被拒绝,php,bash,logging,centos,Php,Bash,Logging,Centos,我发现我的crontab脚本无法按预期工作,因为它们无法在/var/log上写入。我尝试执行命令: sudo/usr/bin/php/var/www/html/iPhone/inarrivo/php/rome/process.php>> /var/log/romeLoading.log 2>&1 通过手工获得: -bash:/var/log/romeLoading.log:权限被拒绝 /var/log权限为: drwxr-xr-x。13根根409615年前16.20 如果我执行: sudotou

我发现我的crontab脚本无法按预期工作,因为它们无法在/var/log上写入。我尝试执行命令:

sudo/usr/bin/php/var/www/html/iPhone/inarrivo/php/rome/process.php>> /var/log/romeLoading.log 2>&1

通过手工获得:

-bash:/var/log/romeLoading.log:权限被拒绝

/var/log权限为:

drwxr-xr-x。13根根409615年前16.20

如果我执行:

sudotouch/var/log/loadRome.log

我没有任何错误

可能是什么问题


请注意,Apache并非危在旦夕:我正在使用sudo从根crontab和shell调用这些脚本作为测试。

这是一个权限问题,因为日志文件属于
root
用户,Apache运行
www-data
。请尝试
chown www-data:www-data/var/log/loadRome.log

这是一个权限问题,因为日志文件属于
root
用户,apache运行
www-data
。尝试
chown www-data:www-data/var/log/loadRome.log
最佳猜测:运行shell的用户没有对
/var/log/romeLoading.log
的写入权限,而stdout重定向(
>
)是由shell用户而不是sudo用户重定向的,因此在>>上拒绝访问,但在
sudo touch
上没有。也许试试

sudo sh-c'/usr/bin/php/var/www/html/iPhone/inarrivo/php/rome/process.php>/var/log/romeLoading.log 2>&1'

应该以root身份运行sh,并让root sh使用root权限执行重定向。但未经测试


下次你想发布调试权限时,发布
namei-l path/to/file
输出,它提供的信息比调试权限问题时声明单个文件本身多得多,因为问题可能比文件本身更高,比如它所在的文件夹,或者它所在的文件夹,etc~和namei递归地为您提供所有这些文件的详细权限信息。

最佳猜测:运行shell的用户没有对
/var/log/romeLoading.log的写入权限,并且stdout重定向(
)由shell用户重定向,而不是sudo用户,因此在>>上拒绝访问,但不是在
sudo touch上
。也许试试

sudo sh-c'/usr/bin/php/var/www/html/iPhone/inarrivo/php/rome/process.php>/var/log/romeLoading.log 2>&1'

应该以root身份运行sh,并让root sh使用root权限执行重定向。但未经测试


下次你想发布调试权限时,发布
namei-l path/to/file
输出,它提供的信息比调试权限问题时声明单个文件本身多得多,因为问题可能比文件本身更高,比如它所在的文件夹,或者它所在的文件夹,etc~和namei递归地向您提供所有这些应用程序的详细权限信息。

权限。不允许Web服务器作为特权用户运行是典型的(也是良好的做法)。如果日志中的信息是公开的,将文件chmodd'ing到0777应该允许它工作。我不是在说apache.OK,谢谢你在问题中澄清这一点。所以你是从crontab运行这个。。。请注意,cron(8)没有像您一样运行,因此它的环境变量等都不相同;特别是,路径可能存在问题。我将首先验证您是否正在使用sudo的完整路径。然而,正如您所说,这是root的crontab。。。那很有趣。简单使用“/usr/bin/env whoami”的cronjob返回什么?而且,如果您在根crontab上运行,您真的需要“sudo”吗?权限。不允许Web服务器作为特权用户运行是典型的(也是良好的做法)。如果日志中的信息是公开的,将文件chmodd'ing到0777应该允许它工作。我不是在说apache.OK,谢谢你在问题中澄清这一点。所以你是从crontab运行这个。。。请注意,cron(8)没有像您一样运行,因此它的环境变量等都不相同;特别是,路径可能存在问题。我将首先验证您是否正在使用sudo的完整路径。然而,正如您所说,这是root的crontab。。。那很有趣。简单使用“/usr/bin/env whoami”的cronjob返回什么?如果你在根crontab上运行,你真的需要“sudo”吗。我从shell和根crontab运行该命令,而不是从apachepages.Nope。我从shell和根crontab运行命令,而不是从apache页面。也许crontab上的问题是由另一个问题引起的。谢谢。@FabrizioBartolomucci将此标记为正确答案!它对我也起作用是的,它是这样起作用的。也许crontab上的问题是由另一个问题引起的。谢谢。@FabrizioBartolomucci将此标记为正确答案!这对我也很管用