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@Adamindex.php
只是一个示例文件名,它也可以包含在config.php
中。你可以简单地使用一个相对路径,就像我第一次解释的那样,如果它是孤立的,效果也是一样的。