在Web服务器上设置共享php脚本文件的最佳方法是什么?

时间:2009-06-24 07:10:28

标签: php apache

我在apache2服务器上的许多域上运行相同的php脚本。只有部分文件在域之间发生变化,其余文件始终相同。现在,每次我设置一个新域时,我都会复制所有文件,但我真的很想将这些公共文件放在一个地方,所以任何更改都会影响所有域。

我曾想过使用一堆符号链接来指向常见文件。这是一个好的方法,还是我可以对php脚本或apache配置文件做一些简单的编辑,以提高效率?

谢谢!

4 个答案:

答案 0 :(得分:3)

我这样做的方法是创建一个“公共”目录,在那里我放置每个站点之间可以共享的所有文件。然后我只需将它们包含在任何需要的地方。

这非常好,因为允许在多个网站上添加功能。

答案 1 :(得分:2)

我建议将公共代码抽象为一组“库”脚本。将它们放在一个公共目录中,并通过修改PHP的 include_path 变量使其可用。这意味着您很可能不必修改当前脚本,同时仍然无需拥有多个副本。

此路径可能(也可能应该)在您的公共目录之外。这样可以提高网站的安全性,而不是直接向外部用户提供。

答案 2 :(得分:1)

这可能有点棘手,因为应用程序几乎需要知道你正在做这件事。 IME,当您将应用程序划分为两个单独的目录树中的公共代码和实例代码时,它最有效。公共代码也不需要做任何愚蠢的事情,例如包含必须在实例树中的文件。

加载公共代码的单一入口点也是一个很大的好处,因为那时你可以链接一些非常小的文件:实例代码包含一个在它自己的目录中;该文件包含实例代码外的文件; 文件然后加载公共代码的入口点文件,或加载另一个。现在这只是一种方法,但这意味着你只需要一个文件,需要知道公共代码的位置(所以如果你需要付出很小的努力就可以移动它),以及如果你做得对,所有各种实例代码树都会加载它,尽管是间接的。

答案 3 :(得分:1)

您可以拥有一个位于所有网站上方的库目录,以及一个配置文件,用于指出您的网站默认应包含哪些库文件。然后,您可以在每个站点中使用另一个覆盖全局配置的配置文件。这些配置文件可用于生成include('../../ lib / * .php')语句,以构建每个站点所需的基本功能工具包。

some_high_level_directory/
-> lib/
   ->*.php (library files)
-> config.php (global library includes)
-> site_1/
   -> config.php (library includes that only relate to site_1)
   -> www/
-> site_2/
   -> config.php (library includes that only relate to site_2)
   -> www/
-> etc, etc

希望这有道理......:)