1

我有 3 个 php 文件。第一个(connexion.php)包含一个我用来创建新 PDO 连接的函数:

<?php
header('Content-Type: text/html; charset=utf-8');
date_default_timezone_set('Europe/Paris');

function connexion($host, $user, $pass, $db){
    $db_host = $host;  
    $db_user = $user;  
    $db_password = $pass;  
    $db_database = $db;               
    return $connexion = new PDO("mysql:host=$db_host;dbname=$db_database;charset=utf8", $db_user, $db_password);
}

?>

第二个文件(my_function.php)包含一个函数,该函数只包含一个连接到数据库的函数,然后回显一些信息。

    <?php
    include(connexion.php);
    function my_first_function(){
        try{
           $connexion = connexion('localhost', 'user', 'user', 'mydb');
           $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
           //some code that echoes information
        }
        catch(...){...}
    }
    ?>

我的问题是当我尝试将最后一个文件包含到我的第三个 php 脚本中以便能够使用该函数时。该脚本甚至没有启动。我只是有“内部错误”。如果我删除 include(my_function.php) 我的文件会正确加载。我不明白。希望有人能帮助我理解。提前致谢。干杯。马克。在第三个文件下面:

<?php
include('connexion.php');
include('my_function.php');

//some code
my_first_function();
?>
4

4 回答 4

2

您不应该include('connexion.php');在第三个文件中使用它,因为它也会在您使用时自动包含在内include('my_function.php');

由于它包含一个函数声明,这将导致错误,因为该函数已被声明。

于 2012-05-11T22:54:52.503 回答
1

“内部错误”不是 PHP 问题,您可能需要检查您的 .htaccess 或其他 apache 设置。

于 2012-05-11T22:33:12.717 回答
1

如果您尝试多次包含该文件,则会出现错误,因为 PHP 不允许您重新声明具有相同名称的函数。要解决这个问题,请使用:

include_once("my_include_file.php");
于 2012-05-11T22:41:49.653 回答
0

您要么没有提供包含文件的相对路径,要么您的包含文件内部有错误。要对此进行测试,请尝试以下代码..

if( file_exists('the_file_where_the_function_is.php') )
{
    echo "Found the file";
} else {
    echo "File not found";
}

如果它找到该文件,那么您很可能在包含的文件中存在语法错误。另外我猜你正在使用 IE 并得到一个“内部服务器错误”???如果是这样,请进入您的 IE 首选项并关闭友好的错误消息以查看实际的 PHP 错误。

于 2012-05-11T22:41:26.723 回答