Reputation:
I have two files, the first one being in the main directory, console_output.php:
<?php
class console_output
{
function write_to_logfile($text) {
file_put_contents("log.txt", $text);
}
}
?>
and the second one in a subdirectory, 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");
}
}
?>
This is all in Yii2 framework, in case that matters. I have tried with apps/console_output.php and ../console_output.php, but it fails either way. When I use apps/console_output.php, the error is
include(app/console_output.php) [https://secure.php.net/manual/en/function.include.php'>function.include.php]: failed to open stream: No such file or directory
The error is shown right at the include statement.
Using ../console_output.php in the include statement gives me an error at
$console_output->write_to_logfile("did Stuff");
with the message
Class 'app\controllers\console_output' not found
I have no idea what I'm doing wrong here. Can you help me out please?
Upvotes: 1
Views: 96
Reputation: 156
Yii(2) offers multiple shortcuts to various paths. The most commonly used one is
Yii::$app->urlManager->baseUrl
So You can include your php file like:
$url = Yii::$app->urlManager->baseUrl.'/../console_output.php';
include $url;
Upvotes: 1
Reputation: 1617
You relative path Def nation is wrong. You are using .. that mean you moving a director up from current script. You need to use "subdirectory/script.php"
Upvotes: 0