2

PHPファイル/a/b/file.phpに次の行があります

require("../connect.php");

connect.phpには行があります

require("../config.inc.php");

これはすべて私のローカルサーバーで正常に機能します。connect.phpを使用するファイルはたくさんあり、それらはすべて正常に機能します。

ただし、ホスティングサイトでは/a/b/file.phpがエラーをスローします。

Fatal error: require() [function.require]: Failed opening required 
'../config.inc.php' (include_path='.:/usr/local/php5/lib/php') in
/******/connect.php on line 3

connect.phpは別のフォルダーにありますが、/ a/bを基準にして探しているのではないかと思います。これを変更するためのphp.ini設定はありますか?

4

4 に答える 4

2

次のようなものを使用しないのはなぜですか。

require( dirname(__FILE__).DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."connect.php");

このようにして、Unixライクなシステムでアプリを開発し、それをWindowsシステムにデプロイする場合などの問題を回避できます。

于 2010-12-27T17:17:08.137 に答える
1

php.ini設定があるかどうかはわかりませんが、通常はインクルードファイルに使用$_SERVER['DOCUMENT_ROOT']します。

require $_SERVER['DOCUMENT_ROOT']."/path/relative/to/document_root/file.php";

相対パスの方が優れている場合もありますが、ほとんどの場合、含めるファイルは同じディレクトリに残ります。

于 2010-12-27T17:18:00.993 に答える
1

通常、私は個人的にglobal.phprootプロジェクトのディレクトリにある)というファイルを作成します。このファイルにはdefine()、定数、ライブラリなどが含まれます。

<?php
// ...
define('APP_INCLUDE_DIR', dirname(__FILE__) .'/');
// ...
?>

その後、同じディレクトリにある他のすべてのファイルにそのファイルを含めます(たとえば、index.phpを使用しrequire('global.php')ます。すべてがそのディレクトリレベルで実行されるので、APP_INCLUDE_DIR含まれるすべてのファイルで定数を使用できます。

<?php
require('global.php');

// ...
require_once(APP_INCLUDE_DIR .'a/b/c/connect.php');
?>

そして、a/b/c/connect.phpあなたは例えば書くことができます

<?php
// ...
require_once(APP_INCLUDE_DIR .'a/b/config.inc.php');
?>
于 2010-12-27T17:21:03.067 に答える
0

PHP.iniファイル のinclude_pathを確認してください。http://php.net/manual/en/function.set-include-path.php

たとえば、私のローカルサーバー(XAMPP)では、次のようになります。`include_path。;C:\ xampp \ php \ PEAR

phpinfo()を実行して調べることもできます。

于 2010-12-27T17:20:22.613 に答える