我想在我的PHP应用程序中使用相对根路径。我正在开发windows。
- wwww
-my-api-2
-my-api-1
-config
-configuration.php
-inf
-appService.php
-index.php
appService.php包括configuration.phplike。
<?php
include_once "/config/Configuration.php";
index.php包括appService.php,如下所示:
<?php
include_once "inf/appService.php";
这在windows上有效,但在linux服务器上上传时不起作用。警告如下:
警告:include_one(/inf/Configuration.php)[function.include once]:无法打开流:在/var/my-api-1/inf/appService.php的行中没有这样的文件或目录
解决方案对文件名区分大小写。我是php的新手,所以我注意到在windows上开发的APPS可能无法在linux上运行,因为是区分大小写的
在PHP(Configuration.PHP)中,文件名似乎使用了大写的"C",而实际文件名都是小写的(Configuration.PHP)。Windows文件名不区分大小写。然而,在Linux上,它们不是。相应地更改PHP中的文件名。
include_once "/config/configuration.php";
尝试:
include_once "./config/Configuration.php";
和
include_once "./inf/appService.php";
相反。Linux需要点作为当前路径。请确保检查您的文件名,因为Linux区分大小写,例如appService.php
不是AppService.php
。
正如其他人提到的,首先,您应该了解您的外壳。在不涉及太多文件系统细节的情况下,在Linux中,大小写的文件名是独立处理的(两个文件"Configuration.php"answers"Configuration.php"可以位于同一文件夹中,并且不同),而Windows不允许用不同的大小写命名两个同名文件。
根据经验,除非您正在创建PHP类,否则请用小写字母命名文件并用小写字母引用它们,这样可以避免任何混淆或问题。
除此之外,我建议您在index.php中定义一个"根路径"常量,您可以包含其中的文件,例如"APP_BASE_path"(只是一个建议)。
在index.php中:
<?php
// Check to see if an APP_BASE_PATH constant is defined, or define one
defined('APP_BASE_PATH') || define('APP_BASE_PATH', realpath(__FILE__));
只要所有文件都包含在"from"index.php中(也就是说,首先通过index.php包含文件,然后文件包含其他文件),就可以使用完整的相对路径包含包含/request/once的文件,如下所示:
<?php
require_once APP_BASE_PATH . '/config/configuration.php';
为了增加多平台兼容性,请考虑在包含文件时使用DIRECTORY_SEPARATOR常量:
<?php
require_once APP_BASE_PATH . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'configuration.php';
当你有很多文件时,这个常数很长,所以我通常只定义一个DS常数来帮助我:
<?php
defined('DS') || define('DS', DIRECTORY_SEPARATOR);
require_once APP_BASE_PATH . DS . 'config' . DS . 'configuration.php';
这是case sensitive
文件名的问题。您不会遇到任何问题,因为windows文件名是case insensitive
,但linux不同,它是case sensitive
。因此,您需要更改文件名或按其名称进行调用。
不更改文件名
include_once "./config/Configuration.php";
include_once "inf/appService.php";
或将文件名更改为
configuration.php
appservice.php
在appService.php
中使用
include_once "../config/Configuration.php";
因为CCD_ 7和CCD_。