php文件路径适用于windows,但不适用于linux


php file path working on windows but not on linux

我想在我的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_。

相关文章: