Неопределенная переменная с include или require - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь включить переменную из другого файла в основной файл php, но получаю Undefined variable.

accounts.php

# GUEST CREDENTIALS
$host = 'localhost';
$guestAccount = 'oncofinder';
$guestPassword = 'xxxxxx';
$database = 'oncofinder';

#LOGGER CREDENTIALS
$loggerAccount = 'logger';
$loggerPassword = 'xxxxx';

connections.php

function guestConnection() {



    try {
        require 'accounts.php';


        $conn = new PDO("pgsql:host=$host;dbname=$database", $guestAccount, $guestPassword);
    }   catch (PDOException $e) {
        echo "Error : " . $e->getMessage() . "<br/>";
        die();
    }

    $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}

Я пытался включить и отключить мои требования, но ничего не получалось.Я действительно думал, что это было просто, но я не могу найти очевидное решение.

Есть что-то, что я делаю не так?Разве это не процедура?

С уважением

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я думаю, у вас есть переменные, определенные в глобальной области, но вы пытаетесь использовать их в локальной области.

Чтобы подтвердить проблему области именования, попробуйте:

require 'accounts.php';
function guestConnection() {
    global $host, $database, $guestAccount, $guestPassword;
    try {
       $conn = new PDO("pgsql:host=$host;dbname=$database", $guestAccount, $guestPassword);
    ...

Это должно работать, если вашguestConnection() находится в глобальной области видимости вне какого-либо пространства имен или класса.

или действительно требуется переместить из try, чтобы получить ошибки, если они есть (файл не существует?):

function guestConnection() {
    require('accounts.php');
    try {
       $conn = new PDO("pgsql:host=$host;dbname=$database", $guestAccount, $guestPassword);
    ...
0 голосов
/ 17 октября 2018

У меня была похожая проблема на моем сервере CentOS.Попробуйте использовать полный абсолютный путь (возможно, сервер conf не настроен так, чтобы разрешать вызов файлов одного уровня):

require_once $_SERVER['DOCUMENT_ROOT']. '/path/to/accounts.php';

Примечание:

вы можете использовать require, и этовсе еще должен работать.Я просто думаю, что require_once безопаснее (с точки зрения случайного дублирования кода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...