【问题标题】:PHP mkdir permissione denied only with a scheduled taskPHP mkdir 权限仅在计划任务时被拒绝
【发布时间】:2018-08-07 10:53:45
【问题描述】:
$old = umask(0);
mkdir($_SERVER['DOCUMENT_ROOT'].'/images/'.$ID.'/', 0755, true);
umask($old);

从浏览器运行此行工作正常,如果我通过计划任务运行此脚本,它会给出:

'mkdir(): 权限被拒绝'.

版本 Plesk Onyx v17.0.17_build1700161028.14 os_CentOS 7

操作系统 CentOS Linux 7.4.1708(核心)

nginx 1.11.10-centos7.17102311

php 5.4.16-43.el7_4

【问题讨论】:

  • 这段代码在这两种情况下运行的用户是什么?相应路径上的所有权是什么?
  • 根据回显whoami;它是同一个用户,所以我想它是同一个所有权。

标签: php apache permissions mkdir


【解决方案1】:

通过浏览器执行脚本时,将使用具有相应配置的域 PHP 处理程序。 计划的 PHP 任务正在使用系统 PHP 处理程序运行,因此域的 PHP 配置被忽略,$_SERVER['DOCUMENT_ROOT'] 变量不会给出相同的结果。 尝试使用 Run a command 计划任务类型,使用所需 PHP 二进制文件的完整路径和相应的 php.ini。对于 Plesk 随附的 PHP 7.0 和 example.com 域的 PHP 配置:

/opt/plesk/php/7.0/bin/php -c /var/www/vhosts/system/example.com/etc/php.ini /path/to/script.php

相同,但系统 PHP:

/bin/php -c /var/www/vhosts/system/example.com/etc/php.ini /path/to/script.php

【讨论】:

  • 是的,这就是问题所在。昨天,经过数小时的努力,我终于设法修复了它……谢谢。
猜你喜欢
  • 2018-03-19
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 2016-08-24
  • 2013-07-01
  • 2012-08-13
相关资源
最近更新 更多