2012-01-04 33 views
1

所以我有PHPWhoIs位于我的服务器的根目录plugins/phpwhois-4.2.2默认情况下包括PHPWhoIs所有脚本

我能够通过包括它喜欢用在PHP脚本的Whois()类:

include_once('../../../plugins/phpwhois-4.2.2/whois.main.php'); 

$whois = new Whois(); 

但我试图让我的服务器默认包含这个文件。我尝试添加这我的php.ini

include_path=".:/plugins/phpwhois-4.2.2/whois.main.php" 

,并确认它带着var_dump(ini_get('include_path'));,但随后说,类Whois()不存在。

我也注意到我覆盖了默认include_path

如何添加此路径以包含在默认情况下在任何脚本中工作?

回答

3

包含路径是用来告诉PHP就是当你在代码中使用了包括一看,所以这是一个目录列表...它不会自动做包括你

因此,与

include_path=".:/plugins/phpwhois-4.2.2 

在php.ini,然后

include "whois.main.php" 

将成功找到该文件,包括

你可能看auto_prepend_file INI设置虽然包含一个特殊的PHP文件之前,你的脚本

+0

我该如何使用auto_prepend_file? – 2012-01-05 00:24:37

+0

这个想法是每次我想为每个站点使用它时,不必包含文件。 – 2012-01-05 00:26:51

+1

@stevether - auto_prepend_file的__auto__部分表示自动,即不必每次都手动包含。你可以通过设置auto_prepend_file =“/ plugins/phpwhois-4.2.2/whois.main来使用它。php“在您的php.ini中,然后在您的脚本中实例化类 – 2012-01-05 07:30:17

1

这里真正的问题的主体是你不想写的路径,包括文件。改为使用autoloader

如果您仍然需要设置默认包含路径,我建议您只需在脚本中回显当前包含路径,然后在php.ini中使用该路径,添加plugins目录或任何基本包含路径。将此与自动装带器一起使用非常有效。

然后在您的包含路径中,制作setup.php并使用它来设置自动加载器。现在,在您的任何网页上,您的包含仅仅是require 'setup.php';

+0

但是我不必在每个文件中都使用它,我想要使用这个脚本? – 2012-01-05 00:13:22

+0

@stevether我更新了我的问题。你明白。 – 2012-01-05 03:33:37

0

您正在改变的“include_path”参数是错误的,尽管名称确实表明它是相关的。它实际上用于设置默认的目录,其中包括文件被寻找 - 许多人更喜欢他们的包括超出他们通常的网络空间,以防止他们被用于上下文,除其他原因之外。

我相信你需要设置的参数是auto_prepend_file。将其设置为相关文件,并将其载入,就好像包含在每个脚本中一样。

相关问题