командный файл — командная строка переполнение стека

Я сделал скрипт .bat, но когда я его запускаю, он не обнаруживает включенный файл в моем скрипте php.

.летучая мышь

"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

Решение

Включения в PHP относятся к текущему рабочему каталогу, а не к местоположению скрипта. Однако при обращении к файлу PHP через веб-сервер CWD обычно является местоположением скрипта.

В вашем случае вам нужно либо изменить каталог перед запуском скрипта, либо изменить его в своем скрипте, используя chdir(__DIR__);

2

Другие решения

<?php

define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__) . DS);

require_once(ROOT . 'db.php');
1