繁体   English   中英

PHP require_once路径

[英]PHP require_once path

我有一个具有以下目录结构的网站:

index.php
connections/database.php
contacts/details.php
inc/functions.php

index.php,database.php和details.php页面都需要functions.php页面。 我在这些页面中包括以下内容:

$path = dirname(__DIR__);
// looks like this: /Library/WebServer/Documents/clients/acme
require_once $path.'/inc/functions.php';

这在我的Mac开发服务器上运行良好。 我只是将文件上传到运行IIS / Windows 2008的生产服务器,所以我知道会有一些路径问题。

我必须更改代码以将functions.php文件包含到此文件中:

$path = dirname(__DIR__);
// looks like this: C:\inetpub\wwwroot\client_sites\acme
require_once $path.'\inc\functions.php';

到目前为止,所有这些工作正常,但是我想知道是否有一种简单的方法可以使此动态变化,因此我不必根据服务器环境为正确的反斜杠或正斜杠修改字符串? 我会忘记某个时刻,否则客户端可能会更改服务器,然后这将中断并需要手动更改路径。

是否有一种方法可以自动处理路径,而不管服务器操作系统环境如何?

嗯,PHP中有DIRECTORY_SEPARATOR常量,但是没有必要使用它。 如果使用正斜杠,则在所有情况下都可以。 Windows不会介意的。

在应用程序引导程序或自动加载中定义DIRECTORY_SEPARATOR。

例如

<?php
define('DS', DIRECTORY_SEPARATOR); // set the 3rd param to true to define case-insensitive

一些PHP框架(例如CodeIgniter)以相同的方式来确保正确的目录路径。

因此,在示例中重新创建路径:

<?php
define('DS', DIRECTORY_SEPARATOR);

require_once dirname(__DIR__).DS.'inc'.DS.'functions.php';

查看PHP手册中的预定义 常量,然后define()

还可以考虑使用set_include_path()spl_autoload_register()

编码愉快!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM