【问题标题】:How could I run a command to execute a .php file?我如何运行命令来执行 .php 文件?
【发布时间】:2021-01-13 17:33:19
【问题描述】:

我想创建一个 cronjob 来在 Ubuntu 上执行一个 .php 文件,但它目前不起作用。 .php 文件位于 /var/www/createfile.php 以创建文本文件。 我试图在 ssh 上执行一些命令。如下

    'php /usr/bin/php /var/www/createfile.php' after that,
    '/user/bin/php /var/www/createfile.php' after that,
    'php /var/www/createfile.php'

(那些是在我发现上一个命令不起作用后执行的)

这些命令的结果是相同的,没有预期的“.txt”文件。 但是,当我在存储“createfile.php”的目录中运行“php createfile.php”时,我得到了一个“.txt”文件。

我不太确定我做错了什么?

提前致谢。

// 下面是我要更新的内容,上面的陈述可能会让你们中的一些人感到困惑。对此我很抱歉。

这是'.php'中要执行的代码

 > <?php
 $myfile = fopen("newfile.txt", "w");
 $txt = "Mickey Mouse\n";
 fwrite($myfile, $txt);
 fclose($myfile);
 ?>

显然,它只是简单地创建一个包含一行短语的文件。 这是我尝试过但不起作用的方法

  1. create cronjob like 'minute * * * * php /var/www/createfile.php'

但是,该文件是由其他用户创建的(假设是 Alice) 我不知道 Alice 与 root 权限是否值得关注?

但是:目前有一种工作方式。 当我位于“/var/www”时,我必须运行“php createfile.php”之类的命令(它是“createfile.php”所在的路径)

【问题讨论】:

  • 没有看到代码很难说。
  • 您的用户没有权限在您所在的目录中写入文件。您需要在 php 文件中执行某些操作,例如 ./file.txt__DIR__.'file.txt 或其他内容。如果您打开错误报告,它会告诉您问题。
  • 您的第二个示例将起作用。但它是“usr”,而不是“user”。 :)
  • Cron 可能以不同的用户、不同的目录或其他权限运行。

标签: php ubuntu cron


【解决方案1】:

您的问题很可能是您在脚本中使用了相对路径,可能是这样的:

<?php

file_put_contents('my/dir/file.txt', $variable)
?>

这将创建相对于脚本运行位置的file.txt 文件。如果它由 cron 作为您的用户运行,它很可能会将文件放在/home/username/my/dir/file.txt

使用要创建的file.txt 的绝对路径:

<?php

file_put_contents('/var/www/my/dir/file.txt', $variable)
?>

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多