[英]PHP 5.3.x include statement problems on iis7 with fast cgi
我有一个 web 服务器正在运行 PHP 5.3.6 非线程安全 (VC9),在使用 FastCGI 的服务器 2008 R2 (iis 7.5) 上运行。
我收到几个错误,如下所示:
PHP Warning: include_once(\\DB-FUNCTIONS.PHP): failed to open stream: No such file or directory in M:\Depts\uc\uc-template\resources\library\faq-functions.php on line 3
PHP Warning: include_once(): Failed opening 'db-functions.php' for inclusion (include_path='.;D:\php5\extras;D:\php5\pear;D:\php5;N:\orgs;T:\Users;M:\depts;L:\Departments;M:\depts\include;') in M:\Depts\uc\uc-template\resources\library\faq-functions.php on line 3
文件调用如下: <?php... include("DB-FUNCTIONS.PHP"); ... ?>
<?php... include("DB-FUNCTIONS.PHP"); ... ?>
该文件存在于文件夹中,权限设置正确,其他包含文件正在工作。
我已将问题追溯到以下
假设您具有以下文件夹结构:
/包括 - inc.php - db.php -index.php
如果 index.php 包含 /includes/inc.php 和 inc.php 调用 include("db.php") (不包含/),则找不到该文件。 如果您将所有文件放在一个文件夹中,它会找到它们。
还有其他人遇到这个问题吗?
我正在粘贴我的 php.ini 文件的清理版本,但我认为一切设置正确。 (对不起,双倍间距......否则它们会一起运行。为了使文件更短,我只包含了与默认 php.ini 设置的变量不同的变量。)
[PHP]
extension_dir ="D:\PHP5\ext"
short_open_tag = On
asp_tags = Off
register_globals = On
register_long_arrays = On
register_argc_argv = On
post_max_size = 8M
magic_quotes_gpc = On
include_path = ".;D:\php5\extras;D:\php5\pear;D:\php5;M:\depts;M:\depts\include;"
cgi.force_redirect = 0
cgi.fix_pathinfo =1
fastcgi.impersonate = 1;
allow_url_fopen = On
allow_url_include = On
fastcgi.logging =0
extension =php_sqlsrv_53_nts_vc9.dll
extension =php_curl.dll
extension =php_gd2.dll
extension =php_imap.dll
extension =php_oci8.dll
extension =php_openssl.dll
我查看了几个不同的站点,找不到与此问题真正相似的任何内容。 此代码在版本 4.4.7 上工作(web 站点是从运行 iis6 的 2k3 服务器迁移的,4.4.7 在 isapi 模式下)
包含行为是预期的。
.
在 PHP 的包含路径中,仅指最外层的 PHP 文件,通常是由请求调用的文件。
如果要包含一个相对于执行包含的文件的文件,请使用__DIR__
魔术常量,例如
include __DIR__ . '/DB-FUNCTIONS.php';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.