本地主机上使用crontab的cronjob没有结果

bf1o4zei  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(477)

我尝试在linux localhost下使用cronjob每1分钟更新一个mysql表,但没有成功。我正在使用wordpress与数据库建立连接。到目前为止我所做的:
在终端中,我打开crontab时使用:

  1. crontab -e

并键入:

  1. * /1 * * * * /usr/bin/php /var/www/.../myscript.php

我保存了更改并在/var/spool/cron/crontab中检查了文件。
myscript.php的内容:

  1. <?php
  2. $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
  3. $url = $_SERVER['REQUEST_URI'];
  4. $my_url = explode('wp-content' , $url);
  5. $path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];
  6. include_once $path . '/wp-config.php';
  7. include_once $path . '/wp-includes/wp-db.php';
  8. include_once $path . '/wp-includes/pluggable.php';
  9. global $wpdb;
  10. $wpdb->query("INSERT INTO mytable (id) VALUES ('1')");
  11. ?>

当我从浏览器运行myscript.php时,表会得到更新。我做错什么了?

wvyml7n5

wvyml7n51#

您意识到您没有webserver,因此$\u server变量将没有server\u name和request\u uri?
因为$path将永远无法正确填写,并且您所需的文件将无法加载。
通常您会看到一些注意事项(如果不是这样的话,您的php.ini没有很好地配置),但是代码仍然应该运行。只有意志 $path 只需按住“/”,就可以从服务器的根目录加载所有内容。
文件不在那里,所以不起作用。
如果需要以这种方式确定路径(浏览时),则需要确定是在浏览,还是在cli中运行。
例如:

  1. if (php_sapi_name() === 'cli') {
  2. $path = 'PATH THAT YOU KNOW, probably /var/www';
  3. } else {
  4. $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
  5. $url = $_SERVER['REQUEST_URI'];
  6. $my_url = explode('wp-content' , $url);
  7. $path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];
  8. }

相关问题