Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么cron执行php脚本有点不同?_Php_Mysql_Cron - Fatal编程技术网

为什么cron执行php脚本有点不同?

为什么cron执行php脚本有点不同?,php,mysql,cron,Php,Mysql,Cron,我有一个file1.php,其中包括来自其他file2.php的函数。正在执行的MySQL查询选择并在该函数中插入信息。 首先,它执行select查询,然后所有内容都写入数组,然后再从数组插入到MySQL数据库。 当函数在浏览器中执行时,它可以正常工作,但当cron执行函数时,函数中的脚本不会在MySQL数据库中插入任何内容(还有其他MySQL和数组命令可以与cron正常工作) 我不知道会是什么 我已尝试调试并输出cron执行,但未成功 当cron正在执行时,该代码在函数中不起作用,但在浏览器中

我有一个
file1.php
,其中包括来自其他
file2.php
的函数。正在执行的
MySQL
查询选择并在该函数中插入信息。 首先,它执行select查询,然后所有内容都写入数组,然后再从数组插入到
MySQL
数据库。 当函数在浏览器中执行时,它可以正常工作,但当
cron
执行函数时,函数中的脚本不会在
MySQL
数据库中插入任何内容(还有其他
MySQL
和数组命令可以与
cron
正常工作)

我不知道会是什么

我已尝试调试并输出
cron
执行,但未成功

cron正在执行时,该代码在函数中不起作用,但在浏览器中执行后起作用的代码

<?php    
 global $db;
$mycfg_channels = mycfg('channels');
$mycfg_lang = mycfg('lang');
$_channels = db_query("SELECT id, xmlid, chname FROM `program_name` WHERE `enable`=1 AND `id` IN ({$mycfg_channels});");
$channels = array();
foreach (explode(",", $mycfg_channels) as $v) {
$channels[$v]= @$_channels[$v];
           }
     $result = $db->sql_query("SELECT `username` FROM `users_export`;");
         $operats = array();
      while ($row = $db->sql_fetchassoc($result)) {
                $operats[]= $row['username'];
            }
            $operators_channels = array();
foreach ($operats as $key => $value) {
 $channels_id_response = $db->sql_query("SELECT `channels_id` FROM `users_export` WHERE `username`= '{$value}'");

                $row = array();
                $row = $db->sql_fetchrow($channels_id_response);
                foreach ($row as $val) {
                    $ch_value = $val;
                }
 $channels_id_exploded = explode(",", $ch_value);
                $allowed_channels = array();
                foreach ($channels_id_exploded as $ch) {
                    $allowed_channels[] = $ch;
                }
                $operator_channels_from_mycfg = array();
         foreach($allowed_channels as $ch) {
foreach ($channels as $c) {
    if ($ch == $c['xmlid']){
$operator_channels_from_mycfg[] = $c;
    }}
}
foreach ($operats as $key => $val) {
    if ($value == $val ) {
foreach ($operator_channels_from_mycfg as $k => $v) {
      $operators_channels[$val][]= $v['xmlid'];
    }
    }   
}
} 
$operators_channels_delta = array();
foreach ($operators_channels as $key => $value) {

  foreach ($value as $k => $v) {

    $delta_from_db = $db->sql_query("SELECT `{$key}_delta` from `program_schedule` WHERE `chid`='{$v}'");    
     while ($row = $db->sql_fetchrow($delta_from_db)) {

   $operators_channels_delta[$key][$v] = $row[$key+'_delta'];  
            }
  }

  }
  var_dump($operators_channels_delta);

foreach ($operators_channels_delta as $key => $value) {

foreach ($value as $k => $val) {
if (isset($val)){
$db->sql_query("UPDATE `program_schedule` SET `{$key}_delta`= '{$val}' WHERE `chid`={$k}");
}}
    }


?>
在浏览器中手动执行脚本时:

Nov 19 14:12:01 media CRON[3132]: (www-data) CMD (/var/www/StartStop/html/includes/cron_1sec.php >> /var/log/cronlog 2>&1)
Nov 19 14:12:01 media CRON[3131]: (CRON) info (No MTA installed, discarding output)
通过MTA获取输出失败


我可以从该输出中获得关于环境变量的哪些信息?在文件
/var/log/cronlog
中,我只得到
PHP警告:模块'xdebug'已在第0行的未知位置加载

我建议您查看一下PHP日志,是否发生了错误


当您使用crontab运行PHP脚本时,执行该脚本的活动目录与您的web服务器运行时不同。尝试使用绝对路径(从磁盘根目录)要求file1.php中的file2.php文件。

从命令行调用php文件时,您使用的是当前环境。确保您的crontab使用相同的环境。

请提供准确的代码示例和
php
配置。您使用的是环境变量还是
.env
文件?执行
cron
的用户是否与手动执行脚本的用户相同?日志如下
(cron)info(未安装MTA,丢弃输出)
。看起来数组可能只是空的。但是还有其他代码和数据库中的数组和数据,一切正常。@MantasKildiš正在检查:
Crontab
file
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/sbin:/usr/sbin:/usr/bin:/usr/bin
环境
file
PATH=“/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/games:/usr/local/games:/sbin:/
在浏览器中执行PHP文件时,如何检查使用的环境变量?
Nov 19 14:12:01 media CRON[3132]: (www-data) CMD (/var/www/StartStop/html/includes/cron_1sec.php >> /var/log/cronlog 2>&1)
Nov 19 14:12:01 media CRON[3131]: (CRON) info (No MTA installed, discarding output)