You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP脚本启动PHP交互式Shell?

实现加载指定文件的PHP交互式Shell

直接使用exec('php -a')无法访问当前脚本中加载的变量,因为exec启动的是独立的PHP进程,和当前脚本的内存上下文完全隔离。以下是两种可行的解决方案:

方案1:用pcntl_exec保留进程上下文(推荐)

pcntl_exec会替换当前PHP进程为新的交互式Shell进程,当前脚本中已加载的变量、类等上下文会被完整保留。

示例代码(index.php):

require 'variables.php';

// 替换当前进程为PHP交互式Shell
pcntl_exec(PHP_BINARY, ['-a']);
  • 注意:需要PHP安装pcntl扩展(CLI环境通常默认包含此扩展),且脚本必须在CLI模式下运行。

方案2:通过临时文件传递上下文(无pcntl扩展时使用)

如果无法使用pcntl扩展,可以将当前脚本的上下文序列化后写入临时文件,再让新的交互式Shell自动加载该文件:

示例代码(index.php):

require 'variables.php';

// 序列化全局变量并写入临时文件
$context = serialize($GLOBALS);
$tempFile = tempnam(sys_get_temp_dir(), 'php_tinker');
file_put_contents($tempFile, "<?php \$GLOBALS = unserialize('" . addslashes($context) . "'); ?>");

// 启动交互式Shell并自动加载临时文件
exec(PHP_BINARY . ' -a -d auto_prepend_file=' . escapeshellarg($tempFile));

// 清理临时文件
unlink($tempFile);

验证步骤

  1. 创建variables.php文件:
$variable_on_variables_file = 'Hello from variables.php';
  1. 在命令行运行php index.php,进入交互式Shell后执行echo $variable_on_variables_file;,即可输出对应变量值。

内容的提问来源于stack exchange,提问作者Bruno Gomes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:02:09