包含或要求的未定义变量

时间:2018-10-17 14:19:20

标签: php postgresql pdo

我正在尝试将其他文件中的变量包含到我的主要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 :(得分:2)

我认为您在全局范围内定义了变量,但是您尝试在局部范围内使用它。

要确认命名范围问题,请尝试:

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);
    ...

答案 1 :(得分:1)

我的CentOS服务器上有类似的问题。尝试使用完整的绝对路径(服务器conf可能未配置为允许以这种方式调用相同级别的文件):

FROM tensorflow/tensorflow:latest-py3
RUN ls -alF
RUN python main.py

注意:

您可以使用require_once $_SERVER['DOCUMENT_ROOT']. '/path/to/accounts.php'; ,它仍然可以使用。我只是认为require更安全(就不会意外地伪造代码而言)。