在zend框架中隐藏数据库密码2

时间:2014-01-06 14:00:55

标签: php doctrine-orm zend-framework2 database-security

我有一个使用doctrine2的zend项目。

我的问题是我无法禁用敏感数据的错误。 (即,当数据库连接失败时,会显示包含密码的错误。)

到目前为止我所尝试的是更改公用文件夹中的index.php文件,如下所示:

<?php
//Disable all error reporting
error_reporting(0); //Somehow this doesn't work
ini_set('display_errors', false); //Somehow this doesn't work
/**
 * This makes our life easier when dealing with paths. Everything is relative
 * to the application root now.
 */
chdir(dirname(__DIR__));

// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
    return false;
}

// Setup autoloading
require 'init_autoloader.php';

// Run the application!
try{
Zend\Mvc\Application::init(require 'config/application.config.php')->run();
}
catch(Exception $ex){
    echo 'server error!';//This code is never reached although a PDOException is thrown!
}

如何禁用这些错误并隐藏敏感数据?

3 个答案:

答案 0 :(得分:1)

检查出来 - &gt; http://www.php.net/manual/en/pdo.connections.php特别是警告通知。

在索引文件中使用Try / Catch不适用于您。您需要将它放入您的服务层或您正在进行数据库查询的任何地方(您没有提供此代码示例)。

您也可以在module.config.php文件集中设置:

'display_exceptions' => false

还要注意您使用的异常处理程序,因为不同的处理程序可以返回不同的信息。

答案 1 :(得分:0)

似乎我必须通过将display_exceptions设置为false来更改my_project_folder / module / Application / config / module.config.php中的view_manager配置:

'view_manager' => array(
        'display_not_found_reason' => true,
        'display_exceptions'       => false, //This line did the trick!
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => array(
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
            'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
        ),
        'template_path_stack' => array(
            __DIR__ . '/../view',
        ),
    ),

答案 2 :(得分:-1)

编辑:没想到这是ZEND 2.请参阅下面我的上一条评论。

我猜测错误级别报告是用此行设置的

Zend\Mvc\Application::init(require 'config/application.config.php')->run();

这是在你关闭之后,所以它只是重新开启。

在application.ini

中试试
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
resources.frontController.throwExceptions = 0
resources.frontController.params.displayExceptions = 0