php - PHP require_once 持续存在于一个单独的进程中
问题描述
编辑:我需要提供更多细节,不确定发生了什么。
我似乎遇到了一个问题,即 PHP 将单独进程中的 require_once 视为外部进程中 require 的重复。
假设我有这个文件,我将在 CLI 上运行:
<?php
require_once 'includeme.php';
$command = "php runme.php";
$handle = popen($command, 'r');
$read = fread($handle, 2096);
$exit = pclose($handle);
print_r($read);
这将执行以下操作:
- 包含一个文件
- 运行一个子进程,它也将尝试包含该文件。
文件 includeme.php 是这样的:
<?php
print "I was included";
包括它应该只会导致它返回该字符串。
runme.php 文件是这样的:
<?php
$result = require_once 'includeme.php';
print $result;
运行主脚本会产生以下输出:
I was included
1
似乎正在发生的事情是 runme.php 脚本为 require_once 语句获得 1 ,这就是如果脚本已经包含则require_once 返回的内容。
但是 runme.php 是一个单独的进程。PHP 怎么会认为它已经包含了 includeme.php?
解决方案
从文档:
成功包含,除非被包含文件覆盖,否则返回 1
您的1
输出中的 并不表示它以前已经包含,只是表示它已成功包含。
无论返回值如何,您都可以require_once
在任何地方使用并相信它按预期工作。
推荐阅读
- php - Netbeans lamp php interpereter 不工作
- javascript - 盖茨比在线支付网关
- sql - 计算行前出现的次数
- c++ - 模板参数的使用顺序是什么?
- django - 如何从 Python Django 中删除数字海洋空间图像
- sql - Bigquery standardSQL:当前日期减去前一个日期,结果为天数?
- r - 如何在 quantstrat 中使用 sigPeak() 函数
- alfresco - 根据 .bpmn2 文件中的变量/条件的值将任务分配给特定的 alfresco 用户
- javascript - 即使在版本控制之后也无法重新加载 javascript 缓存
- html - 如何处理 CSS 媒体查询否定,包括不支持它的浏览器?