我正在尝试将其他文件中的变量包含到我的主要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);
}
我试图将需求放进我的功能中,但没有任何效果。我真的以为这很简单,但是我找不到明显的解决方案。
我做错了什么吗?这不是程序吗?
致谢
答案 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
更安全(就不会意外地伪造代码而言)。