我创建了一个.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包含我的数据库信息,但脚本没有检测到它。请注意,如果我在浏览器中正常运行它,它确实有效。
答案 0 :(得分:2)
PHP中的包含与当前工作目录相关,而不是脚本的位置。但是,当通过Web服务器访问PHP文件时,CWD通常是脚本的位置。
在您的情况下,您需要在运行脚本之前更改目录,或使用chdir(__DIR__);
答案 1 :(得分:1)
<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__) . DS);
require_once(ROOT . 'db.php');