Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

I have stumbled upon two functions i have never used before in php

set_include_path();
get_include_path();

I am currently looking to implement the phpseclib onto a project I am working on.. As i need to use the SFTP class extension of the SSH2 which in turn requires the MathBigInteger class.. etc etc.

The manual says about set_include_path():

"Sets the include_path configuration option for the duration of the script. "

What does this mean for the rest of my framework, will it set ALL include paths from the 'phpseclib' dir?

Also, I really don't get:

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

I am storing the php sec in a custom library directory in my file system, does get_include_path() some how magically find the phpseclib directory in my filesystem?

As you can see I am completely lost here.. could anyone be kind enough to shed some light for me please?

PS/ I only need this library at one partivular point in the application thus only want to include it when needed, at present I am wanting to include it within a child of my model class.

like image 634
John Avatar asked Jan 12 '13 16:01

John


1 Answers

First of all you need to understand what the include_path configuration setting does:

Specifies a list of directories where the require, include, fopen(), file(), readfile() and file_get_contents() functions look for files. The format is like the system's PATH environment variable: a list of directories separated with a colon in Unix or semicolon in Windows.

PHP considers each entry in the include path separately when looking for files to include. It will check the first path, and if it doesn't find it, check the next path, until it either locates the included file or returns with a warning or an error. You may modify or set your include path at runtime using set_include_path().

The construct

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

appends phpseclib to the list of directories searched when you request including a file with one of the above functions.

Since phpseclib is a relative path, the effect is the same as if you had specified ./phpseclib, i.e. PHP will look into a subdirectory named phpseclib inside the current directory of the process. It does not magically determine where the library is located in the filesystem; it's your job to put it where it will be found.

like image 160
Jon Avatar answered Sep 23 '22 12:09

Jon