【问题标题】:Include statement not working in PHP/Yii2包含语句在 PHP/Yii2 中不起作用
【发布时间】:2020-02-16 10:40:13
【问题描述】:

我有两个文件,第一个在主目录,console_output.php:

<?php
class console_output
{
  function write_to_logfile($text) {
    file_put_contents("log.txt", $text);
  }
}
?>

第二个在子目录中,xController.php

<?php 
...import stuff...
include ("../console_output.php");

class xController extends Controller{
  ...do_stuff..

  function doMoreStuff(){
  ...

    $console_output = new console_output();
    $console_output->write_to_logfile("did Stuff");
  }
}
?>

这一切都在 Yii2 框架中,以防万一。我曾尝试使用 apps/console_output.php 和 ../console_output.php,但无论哪种方式都失败了。 当我使用apps/console_output.php 时,错误是

include(app/console_output.php) [https://secure.php.net/manual/en/function.include.php'>function.include.php]:无法打开流:没有这样的文件或目录

错误显示在 include 语句中。

在包含语句中使用 ../console_output.php 时会出现错误

$console_output->write_to_logfile("did Stuff");

与消息

找不到类“app\controllers\console_output”

我不知道我在这里做错了什么。你能帮帮我吗?

【问题讨论】:

  • 您可以在 yii2 上使用 alias 来设置文件的路径。 docslist

标签: php yii2


【解决方案1】:

你的相对路径定义是错误的。您正在使用 .. 这意味着您将导演从当前脚本向上移动。您需要使用“子目录/script.php”

【讨论】:

  • 但是include语句在子目录的文件中,所以如果我想从主目录的文件中调用函数我必须移出子目录。
  • log.txt 在哪里?是否与console_output.php 位于同一目录中
  • 是的。 console_output 和 log.txt 放在一起,xController 在子目录下。
【解决方案2】:

Yii(2) 提供了多种路径的快捷方式。最常用的是

Yii::$app->urlManager->baseUrl

所以你可以包含你的 php 文件,如:

$url = Yii::$app->urlManager->baseUrl.'/../console_output.php';
include $url;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多