`
flex_莫冲
  • 浏览: 1095646 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

TP在APP_DEBUG=false的情況下,CLI和WEBSITE會共用同一個~runtime.php導致出錯的問題解決辦法

阅读更多
TP若使用了
define('APP_DEBUG',false);

會生成./Runtime/~runtime.php 緩存文件,以後每次調用都會用這個文件來處理

但是若一個項目又使用了CLI,CLI生成的./Runtime/~runtime.php 文件跟website是同一個文件,而且cli生成的./Runtime/~runtime.php文件少了一些定義,例如__ROOT__

if(!IS_CLI) {
    // 当前文件名
    if(!defined('_PHP_FILE_')) {
        if(IS_CGI) {
            //CGI/FASTCGI模式下
            $_temp  = explode('.php',$_SERVER['PHP_SELF']);
            define('_PHP_FILE_',    rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
        }else {
            define('_PHP_FILE_',    rtrim($_SERVER['SCRIPT_NAME'],'/'));
        }
    }
    if(!defined('__ROOT__')) {
        // 网站URL根目录
        if( strtoupper(APP_NAME) == strtoupper(basename(dirname(_PHP_FILE_))) ) {
            $_root = dirname(dirname(_PHP_FILE_));
        }else {
            $_root = dirname(_PHP_FILE_);
        }
        define('__ROOT__',   (($_root=='/' || $_root=='\\')?'':$_root));
    }

    //支持的URL模式
    define('URL_COMMON',      0);   //普通模式
    define('URL_PATHINFO',    1);   //PATHINFO模式
    define('URL_REWRITE',     2);   //REWRITE模式
    define('URL_COMPAT',      3);   // 兼容模式
}


第一個解決辦法,將IS_CLI改成0
define('IS_CLI',PHP_SAPI=='cli'? 1   :   0);


改成
define('IS_CLI',0);


但是問題並沒有解決,雖然生成了defined('__ROOT__'),但是在CLI下生成的
__ROOT__ = .;
而website模式下生成的__ROOT__ = "";
兩者的_PHP_FILE_也不同。雖然code相同。

因此這個方案是不行的。

第二個解決辦法,cli和website使用2個不同的runtime cache文件

在入口文件index.php 添加判斷

$is_cli = PHP_SAPI=='cli' ? 1 : 0;
if (!APP_DEBUG && $is_cli) {
	define('RUNTIME_FILE','./Runtime/~runtime_cli.php');
}

這樣在不同模式下使用各自的runtime文件,不會導致衝突。完美解決!
分享到:
评论

相关推荐

    tp_debug_info.txt

    tp_debug_info.txt

    l2tp_debugfs.rar_V2

    总的来说,`l2tp_debugfs`在Linux v2.13.6中的实现,为L2TP子系统提供了丰富的调试工具,使得开发者和系统管理员能够深入理解协议栈的运行情况,定位和解决问题,从而优化网络性能。通过`l2tp_debugfs.c`的分析,...

    tp3.2域名部署详解

    tp3.2域名部署详解 TP3.2版本的ThinkPHP框架中,多项目部署和多域名部署方法是非常重要的。ThinkPHP支持模块的完整域名、子域名和IP部署功能,让模块变得更加灵活。模块绑定到域名或者IP后,URL地址中的模块名称就...

    LC08_L1TP_124036_20200522_20200527_01_T1.tar.gz

    标题中的"LC08_L1TP_124036_20200522_20200527_01_T1.tar.gz"是一个典型的遥感影像数据文件名,通常代表 Landsat 8 的原始卫星数据。Landsat 是美国国家航空航天局(NASA)和美国地质调查局(USGS)联合运行的一个...

    解决ThinkPHP关闭调试模式时报错的问题汇总

    我就郁闷啦,明明本地设置define(‘APP_DEBUG’, false) 运行没点问题,怎么放到服务器上就出错了昵? baidu,Google还是没有找到解决方案,突然发现项目APP_Name/Runtime/Cache目录和APP_Name/Runtime/Logs目录没有...

    ctia_mimo_ota_tp_v1_2_CTIAMIMO_TP_

    总的来说,CTIA MIMO OTA TP V1.2为无线通信行业提供了一个全面且严谨的测试框架,推动了MIMO技术在无线设备中的广泛应用,促进了5G、Wi-Fi等高速无线通信技术的发展。通过这个标准,我们可以更好地理解和评估MIMO...

    tp.rar_TP_TP保护_tp驱动_过TP驱动_过tp下载

    总结来说,尽管“tp.rar_TP_TP保护_tp驱动_过TP驱动_过tp下载”这类工具的存在表明了技术发展的一个方面,但它们的使用充满争议,并伴随着重大的风险。在使用这类工具之前,用户应仔细考虑这些潜在的后果,并在遵守...

    TP-Link_linux_driver.rar_TP_tp link lin_tp-link lin

    对于Linux用户,尤其是开发者和系统管理员来说,这是一份非常重要的资源,他们可以通过这份源代码来理解TP-Link设备在Linux下的工作方式,进行自定义配置,或者解决兼容性问题。对于初学者,这也提供了一个学习如何...

    eSDK_TP_WSDL_V1.5.01

    1. **服务定义**:WSDL文件会定义一个或多个服务,每个服务包含一个或多个端点(也称为“绑定”),这些端点指定了服务的具体访问地址和通信协议。开发者可以通过这些信息知道如何连接到eSDK TP服务。 2. **消息...

    ap6212a0_bb16v3_sina33验证通过BT的功能_wifi部分有问题_20170626_1148没有外层目录.7z

    调通sina33下的AP6212A0版本的BT 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/6/26 11:01 版本:V1.0 本文参照: 《A33 wifi移植说明书.pdf》 还有就是全志R16的parrotv1.1的...

    l2tp_debugfs.rar_l2tp

    L2TP subsystem debugfs driver

    tp_TP_php_源码

    "tp_TP_php_源码"是一个基于ThinkPHP框架的PHP图片批量外链程序,涉及到PHP语言基础、图片处理、数据库操作、文件上传、URL生成等多个方面,对于学习和实践Web开发,尤其是PHP和TP框架的开发者来说,这是一个很好的...

    过tp驱动.zip_TP_TP保护_tp驱动_过TP保护_过tp

    过TP保护则可能是指针对触摸板误触或特殊情况下的一种防护机制,旨在防止在某些场景下不必要的干扰,例如在打字时误触触摸板导致光标移动。 过TP保护功能通常包含以下几个方面: 1. **禁用触摸板**:在插入外接...

    PHP微信支付服务端 (含APP,公众号,H5,扫码支付)

    说明: 配置在 WeChatConfig文件下 环境:php5.6,基于tp5开发 调用统一下单接口: include_once EXTEND_PATH . 'WeChatSDK/WeChatSDK.php'; $data = $this->getOrderInfo($pay_sn); if (!$data) { return $this...

    tp28xx_kdrv_tp9930.tar.gz

    【标题】"tp28xx_kdrv_tp9930.tar.gz" 提供的是与 TP2828 和 TP2831 芯片以及 TP9930 模块相关的驱动程序集合,这个压缩包很可能是针对 Linux 操作系统的一个软件包,因为 ".tar.gz" 文件格式在 Linux 环境中常见...

Global site tag (gtag.js) - Google Analytics