如何从 PHP cli 获取 Linux 控制台 $COLUMNS 和 $ROWS?

2024-03-23

我目前正在为 PHP 创建一个新的简洁的 CLI 库,我想计算出它运行的控制台的宽度/高度。

我尝试过很多事情,比如挖掘 $_ENV、exec("echo $COLUMNS") 等,但没有结果,而如果我在 bash 命令行中输入 echo $COLUMNS 或 $ROWS,它会整齐地显示该值。

我需要做什么才能从 PHP 访问这个值?

我正在使用这样的 .sh 脚本:

#!/usr/bin/php -q
<?php

require_once('lib.commandline.php');


class HelloWorld extends CommandLineApp {

  public function main($args) {

       echo('O, Hai.');

    }

}

Update最终解决方案:

public function getScreenSize() { 
      preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output);
      if(sizeof($output) == 3) {
        $this->settings['screen']['width'] = $output[1][0];
        $this->settings['screen']['height'] = $output[2][0];
      }
    }

另一个不需要解析的 shell 选项是tput:

$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 PHP cli 获取 Linux 控制台 $COLUMNS 和 $ROWS? 的相关文章

  • PHP实现的机票预订系统

    如何防止预订系统中的座位被重复预订 我正在用 PHP 和 MYSQL 制作一个航空旅行预订系统模型作为一个项目 我有一个小问题 仅在付款后 门票和座位详细信息才会永久存储在此处 座位号在付款前分配 假设人 1 预订了飞机上的座位 x 并支付
  • PHP:如何检查 Guzzle 4 中的超时异常?

    如果请求期间发生错误 Guzzle 会引发异常 不幸的是 似乎没有特定于超时的错误 这对我来说很重要 因为我知道这些错误偶尔会发生 我想重试相应的请求 并且需要能够判断错误是否是由于超时而发生的 来自docs http docs guzzl
  • apt-get install tzdata 非交互式

    当我尝试 apt get install y tzdata 将显示用于选择时区的命令行选项 我试图在脚本中使用它来进行一些设置 如何在没有用户输入的情况下使 apt get 运行 我知道重新配置 tzdata 我可以做 echo Ameri
  • PHP curl exec 在 php 脚本相同域上失败

    我使用 php curl 从同一域 url 中的 php 脚本获取内容 但我收到curl exec 错误 curl 错误代码为 28 或操作超时 经过几天的调试 我发现它可以在 htm 等非脚本页面上工作 但不能在 php 上工作 如果 u
  • 如何在不使用 Firebase 控制台的情况下发送 Firebase 云消息通知?

    我从新的 Google 通知服务开始 Firebase Cloud Messaging 感谢这段代码https github com firebase quickstart android tree master messaging htt
  • bash 中的“declare -r”和“readonly”有什么区别?

    在 bash 中 有什么区别declare r and readonly declare r a a1 readonly b b1 我不知道该选择哪个 tl dr readonly使用默认范围global甚至在函数内部 declare使用范
  • PHPMailer:如何将 Content-Type 设置为 multipart/alternative

    我正在使用 phpmailer 发送电子邮件 但消息的标题中带有 Content Type text html 我怎样才能将其更改为多部分 替代 它应该类似于 mail gt 我的配置是 mail new PHPMailer mail gt
  • 规范化 solaris 上的路径名

    在 GNU 系统上我只会使用readlink f SOME PATH 但 Solaris 没有 readlink 我更喜欢在 bash 中运行良好的程序 但如果需要的话其他程序也可以 Edit 到目前为止 我想到的最好的方法是使用 cd 和
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • 不使用 PHP 提交联系表单

    我还是一名学生 今天我们的讲师告诉我们 无需使用 mailto 函数即可提交联系我们表单的唯一方法是使用 PHP 我发誓去年另一位讲师向我们展示了一种仅使用 javascript 的方法 是否可以使用基本表单和 javascript 提交反
  • 将“npm run start”的输出写入文件

    我想捕获的输出npm run start在一个文件中 我遇到了大量错误 我想更好地控制如何筛选输出 当我尝试时 npm run start gt log txt 我得到一个非常简短的文件 8 行 其结尾为 34m 39m 90m wdm 3
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • 将 PHP 7 安装到我的服务器后,PHP 模块无法加载

    我将 PHP 7 安装到我的服务器上 因此 我没有 etc php5 和 etc php 7 0 当我运行我的网络应用程序时 我看不到任何以前的 CURL 或 fork 起初我收到这个错误消息 消息 调用未定义的函数curl init 安装
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php
  • 如何从 PHP 中的字符串创建可能的字符串组合?

    如何从 PHP 中的字符串创建可能的字符串组合 Exp input abc output array 0 gt a 1 gt ab 2 gt abc 3 gt ac 4 gt acb 5 gt b 6 gt ba 7 gt bac 8 gt
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • 在 PHP 中设置 HTTP 响应代码(在 Apache 下)

    给出以下两种在 PHP 中设置 HTTP 响应代码的方法 具体来说 在 Apache 下 方法一 http response code 404 方法二 header HTTP 1 0 404 Not Found 我的问题是 除了这个事实之外

随机推荐

  • 无法将 Neo4j GORM 插件添加到 Grails 项目

    我想在我的 Grails 项目中使用 Neo4j 图形数据库 我创建了一个新的 Grails 项目 我使用的是 Intellij Ultimate Edition 该应用程序运行良好 当我尝试在 BuildConfig groovy 中添加
  • 为什么如果我传递 lambda 作为键,与将其直接应用于具有相同 lambda 的原始可迭代的映射相比,max 的行为会有所不同?

    我试图理解 max 函数中关键参数的工作原理 它来自从列表中查找最接近 0 的整数的问题 并在列表中具有相同正值和负值的情况下使用正值 我发现这是一个有效的在线解决方案 给定一个整数 x 列表 print max a key lambda
  • 为 Spring Boot 应用程序中的所有控制器指定一次 @RequestHeader

    我有一个 Spring Boot 应用程序 其中包含多个控制器 提供各种 REST 方法 每个方法都需要定义相同的标头参数 有没有一种方法可以为所有控制器方法指定一次类似以下内容的方法 public ResponseEntity get R
  • 使用 GET 而不是 POST 删除经过身份验证的页面后面的数据 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我知道只要在公共网站上修改数据 您就应该使用 POST 有几个原因 包括搜索引擎会跟踪所有链接并修改数据 我的问题是 您认为在管理界面等经过
  • React Hook useEffect 缺少依赖项:“dispatch”

    这是我第一次使用 React js 我试图在离开此视图时删除警报 因为我不想在其他视图上显示它 但如果没有错误 我想保留成功警报以显示当我要重定向到另一个视图时 但我在 google chrome 上收到此警告Line 97 6 React
  • 找不到 Django 媒体 URL

    我遇到了一个奇怪的问题 希望其他地方有人也遇到过同样的问题 我的问题是 django 应用程序中存储的媒体无法通过 MEDIA ROOT URL 提供服务 当我尝试获取列表时使用 URL myhost media 保存在我的应用程序中的媒体
  • 如何在Windows窗体中创建垂直导航栏?

    我正在开发我的学校项目 Windows 窗体应用程序 正如你所看到的 我创建了 3 个面板 一个用于标题 一个用于导航栏 一个用于内容 我可以使标题和导航栏静态化 例如网页中的布局 并在单击按钮时更改内容吗 我创建了几个面板 并更改每个面板
  • 将程序集编译为 x64 有什么优点吗?

    假设我有一个 Net Framework 3 5 SP1 CLR 2 0 应用程序 需要在 x86 和 x64 平台上运行 还假设出于某种原因 我需要创建单独的 x86 和 x64 安装程序 由于我无论如何都有一个特定于 x64 的安装程序
  • R data.table 在 i 语句中使用 max

    这应该很简单 但由于某种原因 data table 没有达到我的预期 我想取一行中两个值的最大值来确定是否应该过滤一行 似乎发生的情况是 max 函数正在查看整个列 这不是我想要的 这是代码 gt test dt lt data table
  • 在哪里可以找到带有源代码的简约 WDM 驱动程序模板? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我遇到过内核模式驱动程序 但经验很少 这就是我想做的 有一个加载驱动程序的用户模式应用程序 让用户模式应用程序写入它 以便向它发送指令 让
  • 如何在选择中进行选择

    我有一个包含唯一 ID 字段的表 另一个字段 REF 包含对另一个数据集的 ID 字段的引用 现在我必须选择 REF 指向不存在的数据集的所有数据集 SELECT FROM table WHERE no dataset with ID RE
  • 使用 CloudFront 时,S3 上的自定义重定向规则返回 403

    我在 S3 上为我的存储桶有一个自定义重定向规则
  • “git pull”坏了

    我最近将 MacBook Pro 升级到 Snow Leopard 并且 git pull 返回 rakudo git pull git pull is not a git command See git help Did you mean
  • 将大端字节集合编组到结构中以提取值

    有一个很有洞察力的问题从字节数组中读取 C 中的 C C 数据结构 https stackoverflow com questions 2871 reading a c c data structure in c from a byte a
  • AND 和 OR 运算符在 Bash 中如何工作?

    我在 bash 中尝试了以下命令 echo this echo that echo other 这给出了输出 this other 我不明白 我的试运行是这样的 echo this echo that echo other暗示true tr
  • IE 中的空白 iFrame

    我有一个 iframe 如果来自externaldomain com的something html有css html position relative 在 IE 中 它将把 iframe 渲染为空白 所有其他浏览器都很好 有人知道解决方案
  • 谷歌浏览器闪烁

    大家好 我是新来的 不是编码员 而是我们即将于 2017 年夏天发布的项目的经理 我的开发人员和编码人员无法找到我们网站仅在 Chrome 上存在闪烁的原因 www playinera com http www playinera com
  • 实体框架:如何捕获任何错误

    我正在尝试将数据插入到具有大量数据的 SQL Server 表中not null限制 CREATE TABLE dbo Customer CustomerId int IDENTITY 1 1 NOT NULL FirstName varc
  • 从 .exe 中提取 .ico 并使用 PyQt 进行绘制的最佳方法?

    我正在寻找一种使用 Python 从 exe 文件中提取图标的方法 我知道你可以使用 win32gui 的 ExtractIconEx 函数来获取 exe 的图标 但这会返回一个 HIcon 资源句柄 这不好 因为我想使用 PyQt 绘制图
  • 如何从 PHP cli 获取 Linux 控制台 $COLUMNS 和 $ROWS?

    我目前正在为 PHP 创建一个新的简洁的 CLI 库 我想计算出它运行的控制台的宽度 高度 我尝试过很多事情 比如挖掘 ENV exec echo COLUMNS 等 但没有结果 而如果我在 bash 命令行中输入 echo COLUMNS