Forum PHP 2017

set_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

set_include_pathinclude_path 設定オプションをセットする

説明

string set_include_path ( string $new_include_path )

include_path 設定オプションの値を、このスクリプト内でだけ変更します。

パラメータ

new_include_path

include_path の新しい値。

返り値

成功した場合に元の include_path の値、失敗した場合に FALSE を返します。

例1 set_include_path() の例

<?php
set_include_path
('/usr/lib/pear');

// または ini_set を使用します
ini_set('include_path''/usr/lib/pear');
?>

例2 include path の追加

PATH_SEPARATOR 定数を利用することで、 オペレーティングシステムに依存せずに include path を追加することが可能です。

この例では、既存の include_path の最後に /usr/lib/pear を追加します。

<?php
$path 
'/usr/lib/pear';
set_include_path(get_include_path() . PATH_SEPARATOR $path);
?>

参考

add a note add a note

User Contributed Notes 6 notes

up
17
parks at vecinc dot com
7 years ago
If you find that this function is failing for you, and you're not sure why, you may have set your php include path in your sites's conf file in Apache  (this may be true of .htaccess as well)

So to get it to work, comment out any "php_value include_path" type lines in your Apache conf file, and you should be able to set it now in your php code.
up
10
chris-r3i
10 years ago
Can be useful to check the value of the constant PATH_SEPARATOR.

<?php
if ( ! defined( "PATH_SEPARATOR" ) ) {
  if (
strpos( $_ENV[ "OS" ], "Win" ) !== false )
   
define( "PATH_SEPARATOR", ";" );
  else
define( "PATH_SEPARATOR", ":" );
}
?>

For older versions of php, PATH_SEPARATOR is not defined.
If it is so, we must check what kind of OS is on the web-server and define PATH_SEPARATOR properly
up
4
df a t dougfelton d o t c o m
12 years ago
In order to use .htaccess files to set the include path, PHP must be installed as an Apache module. If PHP is compiled as a CGI binary, you can set the include path in a custom php.ini file (if, for example, you're being hosted somewhere and don't have access to the main php.ini file.  Note that custom php.ini files don't affect subdirectories in the way that .htaccess files do, so you'll need to put your custom php.ini file in any subdirectories as well.
up
2
till at etill dot net
2 years ago
It appears that relative paths are allowed:

set_include_path( '..' . DIRECTORY_SEPARATOR . 'source');
require_once( 'Foo.class.php');
up
-21
cloxy at cloxy dot com
5 years ago
If you want to include files with their absolute path without changing the current include path, you can use the magic constant __DIR__ . For example:

<?php include(__DIR__.'/file.php'); ?>

It is available since PHP 5.3.
up
-31
koenig at electronova dot net
10 years ago
You can also add several paths in one set_include_path separating them by ':'.
ex : set_include_path('/home/mysite/includes1:/home/mysite/includes2')
To Top