PHP 5.3.x включает проблемы с операторами на iis7 с быстрым cgi - PullRequest
0 голосов
/ 07 июня 2011

У меня есть веб-сервер, на котором работает PHP 5.3.6 без поточной защиты (VC9), работающий на сервере 2008 R2 (iis 7.5) с использованием FastCGI.

Я получаю несколько ошибок, подобных приведенной ниже:

 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"); ... ?>

файл существует в папке, права доступа установлены правильно, другие включаемые файлы работают.

Я отследил проблему до следующего

скажем, у вас следующая структура папок:

/ включает в себя - inc.php - db.php -index.php

если index.php включает /include/inc.php, а вызовы inc.php включают ("db.php") (без include /), то файл не будет найден. если вы положите все файлы в одну папку, он найдет их.

кто-нибудь еще сталкивался с этой проблемой?

Я вставляю в очищенную версию моего файла 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 (веб-сайты были перенесены с сервера 2k3, работающего под управлением iis6 с 4.4.7 в режиме isapi)

1 Ответ

1 голос
/ 07 июня 2011

Ожидается поведение включения.

Путь включения . в PHP относится только к самому внешнему файлу PHP, обычно к тому, который вызывается запросом.

Если вы хотите включить файл относительно файла, выполняющего включение, используйте магическую константу __DIR__, например,

include __DIR__ . '/DB-FUNCTIONS.php';
...