我试图从父目录中包含一个php文件,然后收到错误:
admin @ webby:〜$ / usr / bin / php /var/phpscripts/email_parser/tests/_email-test.php PHP致命错误: require_once():无法打开所需的'../PlancakeEmailParser.php' (include_path ='。:/ usr / share / php:/ usr / share / pear')in 第6行/var/phpscripts/email_parser/tests/_email-test.php
致命错误:require_once():无法打开所需的错误 '../PlancakeEmailParser.php' (include_path ='。:/ usr / share / php:/ usr / share / pear')in 第6行/var/phpscripts/email_parser/tests/_email-test.php
PHP文件
#!/usr/bin/php
<?php
error_reporting(E_ALL ^ E_NOTICE ^E_WARNING);
ini_set("display_errors" , 1);
require_once("../PlancakeEmailParser.php");
// etc
?>
文件夹结构
admin@webby:/var/phpscripts/email_parser$ find .
.
./composer.json
./README.txt
./LICENSE.txt
./PlancakeEmailParser.php
./tests
./tests/_email-test.php
对于测试,当我将PlancakeEmailParser.php
移动到tests
目录并从require
答案 0 :(得分:4)
该行
require_once("../PlancakeEmailParser.php");
未使用完全限定的文件系统路径或PHP-URI方案。因此,其结果取决于PHP配置,通常是因为include directory configuration。
PHP CLI可以使用与您的网络服务器不同的配置文件 - 或 - 工作目录与您的网络服务器不同(可能后者在您的特定方案中扮演更多角色)。
你想要的东西也可以很容易地表达出来:
require_once(__DIR__ . "/../PlancakeEmailParser.php");
这可能就是你要找的东西。
答案 1 :(得分:1)
引自PHP CLI SAPI: Differences to other SAPIs:
它不会将工作目录更改为脚本的目录。 (-C 和--no-chdir开关保持兼容性)
为了使脚本中的相对路径保持原样,将目录更改为脚本所在的位置,然后执行脚本:
cd /var/phpscripts/email_parser/tests/ && ./_email-test.php