我制作了一个.bat脚本,但当我运行它时,它不会检测到我的php脚本中包含的文件。
.bat
"C:'xampp'php'php.exe" -f "D:/Projects/Web projects/done/sticky/test.php"
test.php
<?php
include 'db.php';
try {
//stm
$STH = $DBH->prepare( "INSERT INTO users (username, password, email) values (:user, :pwd, :email)" );
//bind
$data = array( 'user' => 'a', 'pwd' =>'b', 'email' => 'c' );
//exec
$STH->execute( $data );
}
catch( PDOException $e ) {
file_put_contents( 'PDOErrors.txt', $e->getMessage(), FILE_APPEND );
die( "db error" );
}
?>
db.php包含我的数据库信息,但脚本没有检测到。请注意,如果我在浏览器中正常运行它,它确实可以工作。
PHP中的Includes是相对于当前工作目录的,而不是脚本的位置。但是,当通过Web服务器访问PHP文件时,CWD通常是脚本的位置。
在您的情况下,您需要在运行脚本之前更改目录,或者使用chdir(__DIR__);
在脚本中更改目录
<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__) . DS);
require_once(ROOT . 'db.php');