php - 我可以在服务器上使用“包含”在应用程序之间共享库吗?
问题描述
我有许多使用子域的网站,并且都在 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”?
我猜这也会更安全,因为核心文件不是直接面向公众的......?
解决方案
是的,这是可能的。
但是请注意,当脚本运行时,相对目录是相对于“当前工作目录”的,这并不总是您所期望的。
最好的方法是使用魔术常量__DIR__
指定路径,它给出了您键入文件的绝对路径。所以,而不是include "..\core_file_directory\index.php";
你会写include __DIR__ . "\..\core_file_directory\index.php";
另一件让你的生活更轻松的事情是使用类自动加载来避免在每个文件的顶部出现长长的包含列表。这也将使以后的移动变得更加容易(例如,将共享类放入可重用的包而不是中央目录),因为只有自动加载器需要知道目录布局。
推荐阅读
- c# - 单击的项目不播放歌曲并给出错误“系统找不到指定的文件”
- python - 从矩阵的 3D 堆栈在 numpy/scipy 中构造块对角矩阵的 3D 堆栈的有效方法
- c++ - gcc 模棱两可的模板实例化错误
- mapbox - Mapbox GL JS 忽略属性表达式
- android - 如何在Android上将多个http请求和数据库查询与Rxjava结合起来
- php - 如何验证指定的代理是否在 php 脚本中使用?
- iis-7 - 与 IP 地址关联的别名
- javascript - 反应钩子,回调中未捕获的变量
- c++ - 让编译器告诉哪些确切的纯虚方法使结构抽象?
- ruby-on-rails - Rails 作为 API 是否需要实例变量?