Home > Backend Development > PHP Tutorial > Solution to the problem of relative paths for executing PHP script files under the php command line (cli)_PHP Tutorial

Solution to the problem of relative paths for executing PHP script files under the php command line (cli)_PHP Tutorial

WBOY
Release: 2016-07-13 09:53:02
Original
888 people have browsed it

Solution to the relative path problem of executing PHP script files under the php command line (cli)

When executing a .php file under the php command line, the working directory of the execution environment ( getcwd( )) is the directory where the php command program (php.exe) is located, so if you want to use relative paths in the file, you must first switch to the current working directory.

Small test program:

The code is as follows:

 $oldpath = getcwd(); // Original working directory The directory where php.exe is located

$path = dirname(__FILE__);

chdir($path); //Switch the working directory to the directory where the current file is located

 $fpath = "forum/readme.txt";

 $fp = fopen($fpath, "a b"); // If you do not switch the working directory, a file not found error will be reported

fwrite($fp, "oldpath:".$oldpath."-newpath:".getcwd());

 fclose($fp);

 ?>

Programs that need to be executed regularly using crotab will also have this problem. You can refer to the following article:

I wrote a script using php script, which needs to be run regularly in crontab, but the following error occurred

The code is as follows:

The code is as follows:

 /var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/share/phpPHP Warning: require(../class/connect.php): failed to open stream: No such file or directory in /var/www/html/bt/e/BtSys/torrents-scrape.php on line 17

PHP Fatal error: require(): Failed opening required '../class/connect.php' (include_path='/var/www/html/bt/e/BtSys:.:/usr/share/pear: /usr/share/php') in /var/www/html/bt/e/BtSys/torrents-scrape.php on line 17

Try solution 1 and add the following code

The code is as follows:

// setting include path

$cur_dir=getcwd();

$cur_dir=$basedir = dirname(__FILE__);

 $path = ini_get('include_path');

ini_set("include_path", "$cur_dir:$path");

 $path = ini_get('include_path');

//echo $path;

require(../class/a.php)

require(../class/b.php)

 ................

Operation failed

Try solution 2 and add the following code

The code is as follows:

$cur_dir = dirname(__FILE__);

chdir($cur_dir);

require(../class/a.php)

require(../class/b.php)

Running successfully

Summary: When requiring, if it is a relative directory, when running the php script in crontab, you have to enter the directory where the script is located

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1005314.htmlTechArticleThe solution to the problem of executing the relative path of the PHP script file under the php command line (cli) is to be executed under the php command line .php file, the working directory of the execution environment (getcwd()) is the php command program (p...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template