thinkphp模块分组后,cli模式无法使用的调整方法

PHP代码无效的原因分析与解决方法 为了解决这个问题,您可以通过更改文件或目录的权限来确保PHP脚本具有足够的权限执行所需的操作。为了解决这类问题,您可以使用PHP解释器提供的错误提示功能,该功能会指出具体的语法错误所在的行数和位置。综上所述,PHP代码无效的原因可能是由于语法错误、变量或函数未定义、文件路径错误、权限问题或服务器配置问题等引起的。在编写PHP代码时,有时我们可能会遇到代码无效的情况,即代码无法按照预期的方式执行或者没有产生期望的结果。如果您的PHP代码中包含文件操作或引用其他文件的逻辑,那么文件路径的设置非常重要。 阅读详情

今天使用thinkphp的cli模式,折腾了半天,总是出现错误,并且跳转到空模块下,或者出现Action中方法无法使用的错误。经查看源码,发现thinkphp的cli模式不支持模块分组,而且Action是重写的,比标准模式下的Action简化了很多。Cli模式下Action类中的方法使用不多,暂且不用管他,主要来调整一下,让cli模式支持模块分组:

进入Thinkphp的核心目录,找到文件App.class.php,具体路径是:Extend/Mode/Cli/App.class.php
第一步,获取GROUP_NAME

大约是38行开始:

define('MODULE_NAME',   !empty($params)?array_shift($params):C('DEFAULT_MODULE'));   
define('ACTION_NAME',  !empty($params)?array_shift($params):C('DEFAULT_ACTION'));

修改为:

// 取得模块和操作名称
if(C('APP_GROUP_LIST')) {
    define('GROUP_NAME',   !empty($params)?array_shift($params):C('DEFAULT_GROUP'));
    define('MODULE_NAME',  !empty($params)?array_shift($params):C('DEFAULT_MODULE'));
    define('ACTION_NAME',  !empty($params)?array_shift($params):C('DEFAULT_ACTION'));
}
else{
    define('MODULE_NAME',  !empty($params)?array_shift($params):C('DEFAULT_MODULE'));
    define('ACTION_NAME',  !empty($params)?array_shift($params):C('DEFAULT_ACTION')); 
}

这是URL_MODEL = 1的修改
下面还有URL_MODEL!=1的时候,将下面else中的内容替换为:

// 取得模块和操作名称
if(C('APP_GROUP_LIST')) {
    define('GROUP_NAME',   isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:C('DEFAULT_GROUP'));
    define('MODULE_NAME',   isset($_SERVER['argv'][2])?$_SERVER['argv'][2]:C('DEFAULT_MODULE'));
    define('ACTION_NAME',    isset($_SERVER['argv'][3])?$_SERVER['argv'][3]:C('DEFAULT_ACTION'));
    if($_SERVER['argc']>4) {
        // 解析剩余参数 并采用GET方式获取
         preg_replace('@(\w+),([^,\/]+)@e', '$_GET[\'\\1\']="\\2";', implode(',',array_slice($_SERVER['argv'],4)));
    }
}
else{
    define('MODULE_NAME',   isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:C('DEFAULT_MODULE'));
    define('ACTION_NAME',    isset($_SERVER['argv'][2])?$_SERVER['argv'][2]:C('DEFAULT_ACTION'));
    if($_SERVER['argc']>3) {
        // 解析剩余参数 并采用GET方式获取
        preg_replace('@(\w+),([^,\/]+)@e', '$_GET[\'\\1\']="\\2";', implode(',',array_slice($_SERVER['argv'],3)));
     }
}

第二步:修改$model
将

$module  =  A(MODULE_NAME);

修改为

if(C('APP_GROUP_LIST')) {
    $module  =  A(GROUP_NAME."/".MODULE_NAME);
}
else{
    $module  =  A(MODULE_NAME); 
}

说明:

1、修改的版本是Thinkphp3.0,如果是其他版本,可能有些出入,请对比代码自行修改 。
2、cli模式下,参数都是区分大小写的,所以,在写命令行时,分组名,模块名,方法名均需要区分大小写

传参 Mongodb snoopy调用还有点问题

基于Vue CLI和ThinkPHP实现的登录注册系统 Vue CLI是一个基于Vue.js进行快速开发的完整系统,它提供了一个标准化的构建环境,用于构建基于Vue.js的项目。通过Vue CLI,开发人员可以更高效地管理项目的依赖、配置和工具链,快速搭建起开发环境。ThinkPHP 是一款快速、简单的 PHP 开发框架,它遵循 MVC 设计模式,旨在加速 Web 应用开发。ThinkPHP 为开发者提供了一系列的约定和工具,包括数据库操作、模板引擎和强大的类库支持。它拥有灵活的路由机制、丰富的中间件支持,以及完善的权限控制和数据校验功能。 阅读详情

相关推荐

Spring Boot 实现多图片上传并回显,涨姿势了~

上传 Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。此处应该注意参数名应该和<input>中的name值相对应: @RequestMapping("/pic") @ResponseBody publicResponseEntity<String>pic(MultipartFile[]pictures)throwsException{ ResponseEnti...

weixin_54556126的博客 894

php安装新扩展后,cli模式下无加载

1、在命令行下执行php -m 命令查看已经加载的扩展时发现修改后配置文件(php.ini中添加了一些扩展,在WEB请求中使用php_info()能查到已经加载)并不生效。 2、其实这并不是什么地方出了问题,因为命令行下执行的php命令调用的配置文件并不是WEB请求时的配置文件,可以通过命令php --ini查看命令行下调用的配置文件: /Applications/MAMP/bin/php/php7.2.20/bin/php --ini Configuration File (php.ini) Path:

m0_37926513的博客 720

游戏脚本开发避坑:Python调用OP模块实现阴阳师后台操作的5个关键点

本文深入探讨了使用Python调用OP模块开发《阴阳师》后台自动化脚本的5个核心避坑点。重点解析了窗口绑定、后台截图与图像识别、鼠标键盘模拟、脚本稳定性以及性能优化等关键环节的常见问题与实战解决方案,帮助开发者高效实现稳定的游戏后台挂机功能。

u0v1w2x3的博客 589

php cli提示常量不存在,ThinkPHP如何使用cli模式

目录和其他框架一样,ThinkPHP有人会提供除了web访问方式外,也提供里cli模式,即命令模式。在需要做批处理、定时任务等场景里,通常使用cli模式,使得产品代码具有统一性,代码复用率高,开发效率更高。基于ThinkPHP3.2版本的cli模式,步骤如下:1、新增入口文件cli.php复制框架文件中的入口文件index.php,改为cli.php作为cli模式下的入口文件,index.php文...

weixin_30927801的博客 417

别再手动填序号了!用Python脚本在Arcgis属性表里实现分组自动编号(附完整代码)

本文详细介绍了如何利用Python脚本在Arcgis属性表中实现分组自动编号,告别低效的手工操作。通过核心代码解析和实战教程,帮助GIS工程师快速掌握自动化编号技术,提升工作效率并降低错误率。特别适合城市规划、国土调查等需要处理大量分组数据的场景。

weixin_42532473的博客 309

使用IGV软件可视化染色质可及性

染色质可及性(chromatin accessibility)是指DNA序列在植物细胞核中的可访问程度。染色质是由DNA和蛋白质组成的复杂结构,它紧密地包裹在细胞核中,并影响基因的表达和功能。染色质可及性研究着重于理解染色质是否容易被转录因子和其他调控蛋白访问,从而影响基因的表达。文献中,常常会有下面这种图片来表示基因组上的一些区域或基因的染色质开放性强弱。一般情况下,我们可以使用IGV软件或GSA-man软件进行可视化,两者的操作相似。这里,以IGV软件为例,演示如何对染色质可及性进行可视化。

沉香best的博客 3724

PHP脚本CLI模式下无法正常执行

第二次在同一个坑里跌倒了? 必须要记下来涨个记性 吾有一脚本PHP代码, 开头 #! /usr/bin/php 开头对了然而还是无法执行, 原来是文件格式不正确, 在windows 下的是 doc, 应该改成 unix vim test.php set ff // 查看格式, 如果是doc 要改成unix set ff=unix ...

m0_37752860的博客 532

围绕国产化操作系统以及人大金仓地理空间库的GIS的解决方案,含超详细部署步骤以及与QGIS,GeoServer,PostGlS Shapefile lmport/Export Manager的连接步骤

人大金仓软件 2.1软件的下载以及授权的相关文件插件 2.2上传至虚拟机 2.3KingbaseES V8R6数据库部署过程 2.3.1创建安装用户 2.3.2赋权 2.3.3.创建安装目录且赋权 2.3.4 准备挂载 2.4kingbase安装方法 2.7postgis安装 3 人大金仓数据库与QGIS的连接 4 人大金仓数据库与PostGlS Shapefile lmport/Export Manager的连接 5 人大金仓数据库与geoserver的连接

挣钱花388的博客 2590

php think命令,ThinkPHP 使用命令行 (cli) think 调用

在某些场景里,我们需要在命令行中调用代码首先,在applicationcommand目录(目录没有则创建)下新建hello.php:

weixin_42467457的博客 1645

解析 RABAX during SAPGUI Logon 错误及其解决方案

登录用户关联了初始启动程序,该程序由于未处理的异常导致运行时错误。在 ST22 查看错误的程序名和错误行。修复初始程序代码中的逻辑问题。重新部署修复后的代码。示例代码:防止未处理的异常TRY." 模拟逻辑处理ENDTRY.此代码通过 TRY-CATCH 块捕获潜在错误,避免程序崩溃。是 SAP 系统中常见的运行时错误,其根源可能涉及多个方面,包括用户配置、系统状态、数据库连接和自定义开发等。通过结合 ST22、SM21 等诊断工具,以及完善的代码实践和系统监控,可以有效预防和解决此类问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1781

【Python】秋招机考 —— 2025/8/27 华为 AI 方向

2025 华为 AI 秋招机考题目包含15道单选题、5道多选题和2道机器学习编程题,涵盖核心算法与数学知识。单选题考察了Softmax激活、Transformer位置编码、Jacobi迭代、大模型幻觉现象、特征向量、K-means聚类、矩阵秩、实对称矩阵性质、SVD分解、概率论等知识点。多选题涉及高斯-赛德尔迭代和朴素贝叶斯分类器。

一杯水果茶!足矣~ 840

thinkphp中使用cli模式

thinkphp3.23使用cli模式if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); //普通模式,解决官方分组不支持cli的问题 $depr = '/'; $path = isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:''; if(!empty

一杯苦恰啡的博客 5713

【OAG vs RAG】OAG工程实战(下):权限治理与多模型协同

本文摘要(149字): OAG工程体系的核心挑战在于权限治理与多模型协同。文章深入探讨OMA(对象管理权限)系统,实现细粒度访问控制:通过对象级权限管理行级安全,属性级权限控制敏感字段脱敏,确保AI Agent权限不越界。系统采用三层次防护:对象策略控制记录可见性,属性策略处理字段级脱敏,动作策略限制操作范围。权限验证贯穿Agent执行全流程,结合多模型交叉验证机制,构建企业级AI安全防线。这些设计使OAG系统从技术演示升级为生产可用的企业解决方案。

求知若渴、虚心若愚 105

ThinkPHP3.2.3使用cli命令行模式

if(version_compare(PHP_VERSION,'5.3.0','&lt;'))  die('require PHP &gt; 5.3.0 !');//普通模式,解决官方分组不支持cli的问题$depr = '/';$path   = isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:'';if(!empty($path)) {    $p...

HoeWang的博客 4138

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

thinkphp 3.2的cli模式(命令行模式)(修改入口文件index.php保存为cli.php)

  使用tp3.2.3的cli模式时,报错。加上绝对路径还是报错。所以采用普通模式12345678910111213141516171819if(version_compare(PHP_VERSION,'5.3.0','&lt;'))  die('require PHP &gt; 5.3.0 !');//普通模式,解决官方分组不支持cli的问题$depr = '/';$path   = isset...

liuxin_0725的专栏 3174

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

thinkphp常用常量的调用

RUNTIME_PATH 应用运行时目录(默认为 APP_PATH.'Runtime/')COMMON_PATH 公共模块目录 (默认为 APP_PATH.'Common/')DATA_PATH 应用数据目录 (默认为 RUNTIME_PATH.'Data/')LOG_PATH 应用日志目录 (默认为 RUNTIME_PATH.'Logs/')TEMP_PATH 应用缓存目录(默认为 RUNTIME_PATH.'Temp/')HTML_PATH 应用静态缓存目录(默认为 APP_PATH.'Html/')

csdn_manong1的博客 473

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ThinkPHP6.0今天正式发布

2019 年 10 月 24 日 发布 官方历时一年多倾力打造的ThinkPHP6.0版本正式发布,该版本基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。 由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+(推荐PHP7.3+),不支持5.1的无缝升级(官方提供了升级指导)。 主要特性: ● 采用PHP7强类型(严格模式) ● 支持更...

weixin_44056915的博客 763

php常量调用,thinkphp常用常量的调用

{$Think.const.APP_NAME} {$Think.const.APP_PATH} http://localhost/mall/user/index/index__ROOT__ 获得:项目根目录 “/mall”__APP__ 获得:当前项目URL"/mall/index.php"__MODEL__ 获得:当前分组/mall/user/ 3.2.3版本无法调出来??__CON...

weixin_39627699的博客 270

tp6-vue-admin:用 ThinkPHP 6 + Vue 搭一套前后端分离后台,权限模型直接可用

tp6-vue-admin 是基于 ThinkPHP 6 + Vue 2.6 的前后端分离落地方案,后端是纯接口服务,前端是带动态菜单的管理界面。当需求是「做个前后端分离的后台」时,首先要拍板的问题往往是:菜单和权限怎么管、每个请求怎么验证身份。这个项目把这套问题给出了参考实现。 ## 跑起来:在本地启动项目 先克隆仓库。顶层是两个独立工程,`tp6` 是后端,`vue-admin` 是前端:

gitblog_00631的博客 969

ThinkPHP8 多应用/多路由下子路由在 Think-Swoole 中访问路由提示不存在问题

在 ThinkPHP8 多应用或多路由模式下,在 Think-Swoole 中启动时访问子路由,解决路由不存在的问题。

Pasa吴技术博客 1579

php 常量 位置,thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)

本文整理总结了thinkPHP3.x常用的常量。分享给大家供大家参考,具体如下:一、预定义常量URL_COMMON=0 普通模式 URLURL_PATHINFO=1 PATHINFO URLURL_REWRITE=2 REWRITE URLURL_COMPAT=3 兼容模式 URLHAS_ONE=1 HAS_ONE 关联定义BELONGS_TO=2 BELONGS_TO 关联定义HAS_MANY=...

weixin_31459571的博客 296

ThinkPHP常量

预定义常量 常量 说明 URL_COMMON=0 普通模式 URL URL_PATHINFO=1 PATHINFO URL URL_REWRITE=2 REWRITE URL URL_COMPAT=3 兼容模式 URL HAS_ONE=1

jimlong的专栏 1480
上一篇: Gearman介绍、调研、测试与原理分析
下一篇: PHP5.3, PHP5.4, PHP5.5新特性
大鹏的世界
博客等级 码龄19年 332粉丝 417原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值