Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要_一次不能像我期望的那样工作_Php_Phpunit_Require Once - Fatal编程技术网

Php 需要_一次不能像我期望的那样工作

Php 需要_一次不能像我期望的那样工作,php,phpunit,require-once,Php,Phpunit,Require Once,可能重复: 我的项目结构如下: ProjectName/ src test TestClass.php tests TestTestClass.php 当我尝试执行时,需要一次“/ProjectName/src/test/TestClass.php”进入tests/testclass.php我从php得到一个错误,指出:没有这样的文件或目录。 我检查了拼写,检查了所有内容。我不能给它完整的/home/userName/bla/bla路径,因为我需

可能重复:

我的项目结构如下:

ProjectName/
   src
     test
       TestClass.php
   tests
     TestTestClass.php
当我尝试执行
时,需要一次“/ProjectName/src/test/TestClass.php”
进入tests/testclass.php我从php得到一个错误,指出:没有这样的文件或目录。

我检查了拼写,检查了所有内容。我不能给它完整的
/home/userName/bla/bla
路径,因为我需要把它交给其他人


有什么想法吗?

传递到require/include/require\u once/include\u once的绝对文件路径所有工作都从文件系统根目录开始,而不是从Web服务器根目录开始这是预期的行为。执行
testclass.php
时,工作目录设置为
ProjectName/tests

最好使用
。/src/test/TestClass.php

您的路径实际上是绝对的,因此您将直接从
/
开始工作,这不是您所期望的。如果您的
包含路径设置为服务器的根目录,那么您的代码将在没有第一个
/
的情况下工作。如果您不希望依赖于
include\u path
或任意调平(使用
),则始终可以在第一个文件中设置一个环境变量,该变量定义应用程序根目录的完整路径,然后将其用于所有include

例如,
/ProjectName/index.php

define('APPPATH', __DIR__);
require_once APPPATH . '/src/test/TestClass.php';
。。在
/ProjectName/tests/testclass.php
中:

define('APPPATH', __DIR__);
require_once APPPATH . '/src/test/TestClass.php';

使用特殊的DIR获取脚本的当前路径,这样您就更容易找到脚本路径:

require_once(__DIR__ . '../folder/whatever.php');

为项目创建路径常量将使您受益匪浅。这是很容易做到的恒定和稳定

上述内容可以放在一个配置文件中,这样在整个项目中包含文件就更容易了

require_once ROOT_PATH . '/src/test/TestClass.php';

我还建议您查看。

您使用的是绝对路径。
/ProjectName
是否在绝对根目录中?是否尝试使用相对路径?e、 g.
require\u once'../src/test/TestClass.php'
require\u once
不是一个函数,因此不需要括号。@JasonMcCreary这就是它没有括号的原因。@JasonMcCreary也缺少一些实质性的东西,我写了之后修复;)此计划不起作用,因为在运行php单元测试时,从未看到、运行或理解索引。无论如何../path/to/file.phpworks@Adam
index.php
只是一个示例文件名,它也可以包含在
config.php
中。你可以简单地使用一个相对路径,就像我第一次解释的那样,如果它是孤立的,效果也是一样的。