【问题标题】:Running PHP script via Cron通过 Cron 运行 PHP 脚本
【发布时间】:2019-07-23 00:55:12
【问题描述】:

我正在使用 Instagram Private PHP Api 编写一个 php 脚本。

在“root”用户下通过 SSH 可以正常工作,但是当我尝试通过浏览器或 cron 运行它时,我收到错误:警告:chmod(): Operation not allowed in .....强>

我猜是权限有问题,但我不是很擅长服务器管理,不明白我能做什么=(

请帮忙,我该如何解决这个问题?

【问题讨论】:

标签: php api cron instagram


【解决方案1】:

运行 PHP 的用户必须具有对给定文件或目录进行 chmod 的权限。如果您通过 CRON 运行此脚本,则可以在 CRON 作业中设置 PHP 运行的用户。如果您在浏览器中访问脚本,PHP 很可能以 php 或 php-fpm 或 Web 服务器用户身份运行。

只需确保给定文件或文件夹归运行 PHP 的用户所有。

注意:建议您在 CRON 中以 root 身份运行此脚本。

【讨论】:

  • 恐怕你没有告诉 OP 一些新的东西。你应该解释如何他确保用户有权限... '只需确保用户有权限对给定的文件或目录进行chmod。'
  • 当我从 SSH 运行它时,我以 root 身份登录,所以当我在控制台 php test.php 中写入时它可以工作,一切都很好,但是当我尝试从我的浏览器mywebsite.com/test.php 运行它,我收到错误警告:chmod(): Operation not allowed in .....
【解决方案2】:

因为 Apache(或您正在使用的 Web 服务器)使用不同的 Linux 用户(通常是 www-data)执行 PHP,这显然与您通过 SSH 访问时使用的用户帐户具有不同的权限。

要解决这个问题,你首先要知道你要去的文件夹/文件chmod()属于谁。如果它属于root,那么出于安全考虑,不建议通过任何公众可以访问的脚本到chmod

如果它属于您的用户名,例如foo,您可以在 SSH 控制台中使用chown() 将您要转到chmod() 的文件夹/文件的所有权更改为可供www-data 组访问,那么你chmod() 命令可以毫无问题地执行。

【讨论】:

  • 我查过了。它属于根
【解决方案3】:

如果您正在编辑/etc/crontab,请确保用户参数(一周之后的那个)是root

如果你是通过crontab -e编辑crontab,添加用户参数crontab -eu root

【讨论】:

  • 这是一个危险的建议。
  • 如果target是root用户,你有什么更好的建议吗?
  • 更改目标的所有权。虽然以 root 身份运行 cron 是可能,但它为该脚本提供了太多的权力。我们无法验证此脚本是否不易受到代码执行攻击。如果不是这样,未来的变化可能会使其容易受到影响。如果不良行为者使用此脚本执行自己的代码,则该代码将以 root 权限运行。
  • 既然无法验证脚本,你怎么能说这是危险的呢?请参考帖子,OP说他已经通过root用户运行脚本并成功,然后他想通过cron运行它,这2个动作有因果关系,但是你建议他改变目标的所有权,之前的测试是无效,需要以其他用户身份登录,然后再次运行脚本。现在这个问题的条件完全被打破了。
  • OP 表示对 Linux 缺乏经验。由于没有提到 PHP 经验,我不想假设 OP 在 PHP 和安全方面有经验。建议以 root 身份运行 chron 而不表示它的危险是......危险的。
猜你喜欢
  • 2020-02-28
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 2012-11-14
  • 2016-04-14
  • 2017-08-11
  • 2016-10-01
  • 2014-06-20
相关资源
最近更新 更多