gpt4 book ai didi

php - 检测PHP交互模式的方法

转载 作者:行者123 更新时间:2023-12-04 18:07:03 24 4
gpt4 key购买 nike

我正在寻找一种方法来检测 PHP 脚本是否在 PHP 的交互模式下执行。

我有一个 bootstrap.php 文件,我在某些脚本中 include ,但在以交互模式启动 PHP 时也使用它来为其中初始化的东西获取 REPL playground文件(主要用于通过 ORM 探索数据库):

php -d auto_prepend_file=bootstrap.php -a

我想在从 php -a 运行时执行一些代码 — 定义一些有用的全局变量,显示欢迎帮助消息。

PHP_SAPI 在这两种情况下都报告 cli

我想要这样的东西:

php -d auto_prepend_file=bootstrap.php -a
# → true

php -a
include 'bootstrap.php';
# → true

php bootstrap.php
# → false

php file_that_includes_bootstrap.php
# → false

php -r "include 'bootstrap.php';"
# → false

cat bootstrap.php | php
# → should be `false`, but I don't really care about that one

最佳答案

我已经结束了:

'cli' === PHP_SAPI && ! defined('STDOUT')

STDOUT 未在交互模式下定义(并且当 PHP 未在 CLI 中运行时,因此检查 PHP_SAPI)。虽然除了以下内容我找不到任何关于它的文档:

Note:

These constants are not available if reading the PHP script from stdin.

http://php.net/manual/en/features.commandline.io-streams.php

……当然这里不是这种情况。所以它可能会在未来的版本中改变。使用风险自负。

关于php - 检测PHP交互模式的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com