我有一个脚本,我试图在命令行中使用我的 Web 服务器上的命令执行:
php /path_to_file/file.php 'alert' >> /path_to_log_directory/exec.log &
显然,这两条路径都指向日志和 php 文件的位置。php 文件有以下代码:
<?php
set_time_limit(3600);
require_once(dirname(dirname(__FILE__)).'/apps/init.php');
include (dirname(dirname(__FILE__)) . '/apps/avl_counter.php');
AvlCounter::$showReports = false;
AvlCounter::updateWholeInventory(false);
?>
现在 updateWholeInventory 从 init.php 文件中调用一个不在类中的函数“mysql_subquery”,它调用的函数是一个全局函数。但是,当我尝试上面的命令行 PHP 命令时,终端会给我:
PHP Fatal error: Call to undefined function mysql_subquery() in /path_to_file/avl_counter.php on line 521
该文件在我的本地环境中运行良好,该环境是运行 apache 的 MAMP,但网络服务器运行的是 nginx 和旧版本的 PHP。谁能帮助弄清楚为什么这个文件在我的本地设置上执行得很好,但在我的网络服务器上却没有?
这是一个精简版init.php
:
<?
date_default_timezone_set('America/Chicago');
require(dirname(__FILE__) . '/config.php');
if (DEBUG) {
ini_set('display_errors', true);
error_reporting(E_ALL ^ E_NOTICE);
} else {
error_reporting(0);
}
ob_start();
...
function mysql_subquery( $file=false,$line=false,$query=false) {
global $queryLog;
if (empty($queryLog))
$queryLog = array();
$start = microtime(true);
// ...
}
更新
我还遇到这样的问题,当 PHP 文件在 shell 中执行时,init.php 的代码几乎作为 shell 中的文本返回,而不是作为 PHP 脚本处理。有任何想法吗?