首页 > 解决方案 > 我可以在服务器上使用“包含”在应用程序之间共享库吗?

问题描述

我有许多使用子域的网站,并且都在 Web 服务器上它们自己的目录中。每个子域中 99% 的文件都是相同的,只有少数文件是每个子域不同且特有的。

我熟悉包含语句,但是有没有办法让我将所有“核心”php 文件放在一个目录中,并且只有子域目录中的唯一文件,然后他们可以引用核心文件?这样就不必维护同一个文件的多个副本……这不是一个好习惯!

像这样的东西...

+-core_file_directory -index.php
|                     -file1.php
|                     -file2.php
|
+-sub_domain_1 - subdom_scheme.css
|              - unique_file.php
|
+-sub_domain_2 - subdom_scheme.css
|              - unique_file.php
|
+-sub_domain_3 - subdom_scheme.css
               - unique_file.php

我需要在每个子目录中有一个 index.php,但假设我可以在核心文件夹中包含 index.php?我可以包含相对路径吗?“..\core_file_directory\index.php”?

我猜这也会更安全,因为核心文件不是直接面向公众的......?

标签: php

解决方案


是的,这是可能的。

但是请注意,当脚本运行时,相对目录是相对于“当前工作目录”的,这并不总是您所期望的。

最好的方法是使用魔术常量__DIR__指定路径,它给出了您键入文件的绝对路径。所以,而不是include "..\core_file_directory\index.php";你会写include __DIR__ . "\..\core_file_directory\index.php";

另一件让你的生活更轻松的事情是使用类自动加载来避免在每个文件的顶部出现长长的包含列表。这也将使以后的移动变得更加容易(例如,将共享类放入可重用的包而不是中央目录),因为只有自动加载器需要知道目录布局。


推荐阅读