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:01
Original
898 people have browsed it

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

When executing .php files 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:
Copy code 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:

Copy code 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
Copy 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)
.............

Failed to run

Try solution 2 and add the following code

Copy the code as follows:
Copy code The code is as follows:

$cur_dir = dirname(__FILE__);
chdir($cur_dir);
require(../class/a.php)
require(../class/b.php)

Run 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/1005455.htmlTechArticleSolution to the problem of relative paths for executing PHP script files under the php command line (cli), under the php command line When executing a .php file, the working directory of the execution environment (getcwd()) is the php command process...
Related labels:
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!