`
#rethink#
  • 浏览: 46897 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

symfony的环境检测代码

阅读更多
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><?php

function is_cli()
{
  
return !isset($_SERVER['HTTP_HOST']);
}

/**
 * Checks a configuration.
 
*/
function check($boolean, $message, $help = '', $fatal = false)
{
  
echo $boolean ? "  OK        " : sprintf("[[%s]] ", $fatal ? ' ERROR ' : 'WARNING');
  
echo sprintf("$message%s\n", $boolean ? '' : ': FAILED');

  
if (!$boolean)
  {
    
echo "            *** $help ***\n";
    
if ($fatal)
    {
      
die("You must fix this problem before resuming the check.\n");
    }
  }
}

/**
 * Gets the php.ini path used by the current PHP interpretor.
 *
 * @return string the php.ini path
 
*/
function get_ini_path()
{
  
if ($path = get_cfg_var('cfg_file_path'))
  {
    
return $path;
  }

  
return 'WARNING: not using a php.ini file';
}

if (!is_cli())
{
  
echo '<html><body><pre>';
}

echo "********************************\n";
echo "*                              *\n";
echo "*  symfony requirements check  *\n";
echo "*                              *\n";
echo "********************************\n\n";

echo sprintf("php.ini used by PHP: %s\n\n", get_ini_path());

if (is_cli())
{
  
echo "** WARNING **\n";
  
echo "*  The PHP CLI can use a different php.ini file\n";
  
echo "*  than the one used with your web server.\n";
  
if ('\\' == DIRECTORY_SEPARATOR)
  {
    
echo "*  (especially on the Windows platform)\n";
  }
  
echo "*  If this is the case, please launch this\n";
  
echo "*  utility from your web server.\n";
  
echo "** WARNING **\n";
}

// mandatory
echo "\n** Mandatory requirements **\n\n";
check(
version_compare(phpversion(), '5.2.4', '>='), sprintf('PHP version is at least 5.2.4 (%s)', phpversion()), 'Current version is '.phpversion(), true);

// warnings
echo "\n** Optional checks **\n\n";
check(
class_exists('PDO'), 'PDO is installed', 'Install PDO (mandatory for Propel and Doctrine)', false);
if (class_exists('PDO'))
{
  
$drivers = PDO::getAvailableDrivers();
  check(
count($drivers), 'PDO has some drivers installed: '.implode('', $drivers), 'Install PDO drivers (mandatory for Propel and Doctrine)');
}
check(
class_exists('DomDocument'), 'PHP-XML module is installed', 'Install and enable the php-xml module (required by Propel)', false);
check(
class_exists('XSLTProcessor'), 'XSL module is installed', 'Install and enable the XSL module (recommended for Propel)', false);
check(
function_exists('token_get_all'), 'The token_get_all() function is available', 'Install and enable the Tokenizer extension (highly recommended)', false);
check(
function_exists('mb_strlen'), 'The mb_strlen() function is available', 'Install and enable the mbstring extension', false);
check(
function_exists('iconv'), 'The iconv() function is available', 'Install and enable the iconv extension', false);
check(
function_exists('utf8_decode'), 'The utf8_decode() is available', 'Install and enable the XML extension', false);
check(
function_exists('posix_isatty'), 'The posix_isatty() is available', 'Install and enable the php_posix extension (used to colorized the CLI output)', false);

$accelerator = 
  (
function_exists('apc_store'&& ini_get('apc.enabled'))
  
||
  
function_exists('eaccelerator_put'&& ini_get('eaccelerator.enable')
  
||
  
function_exists('xcache_set')
;
check(
$accelerator, 'A PHP accelerator is installed', 'Install a PHP accelerator like APC (highly recommended)', false);

check(
!ini_get('short_open_tag'), 'php.ini has short_open_tag set to off', 'Set it to off in php.ini', false);
check(
!ini_get('magic_quotes_gpc'), 'php.ini has magic_quotes_gpc set to off', 'Set it to off in php.ini', false);
check(
!ini_get('register_globals'), 'php.ini has register_globals set to off', 'Set it to off in php.ini', false);
check(
!ini_get('session.auto_start'), 'php.ini has session.auto_start set to off', 'Set it to off in php.ini', false);

check(
version_compare(phpversion(), '5.2.9', '!='), 'PHP version is not 5.2.9', 'PHP 5.2.9 broke array_unique() and sfToolkit::arrayDeepMerge(). Use 5.2.10 instead [Ticket #6211]', false);

if (!is_cli())
{
  
echo '</pre></body></html>';
}

 

分享到:
评论

相关推荐

    symfony2建立一个完整blog的例子

    首先,你需要在本地环境中安装Symfony2。这通常涉及到下载Composer,它是PHP的依赖管理工具。通过运行以下命令安装Symfony2全局命令行工具: ```bash composer global require symfony/flex ``` ### 2. 创建项目...

    symfony权威指南

    本章介绍了如何安装和配置Symfony环境,包括依赖管理、环境设置和启动服务器。此外,还会讲解如何通过命令行工具`symfony console`执行各种任务。 **第4章 建立页面的基础知识** 在这里,读者将学习如何创建基本的...

    symfony4原生包

    Symfony 4是Symfony框架的一个重要版本,它在2017年发布,为开发者提供了更加现代化、高效且易于使用的PHP开发环境。Symfony框架是基于组件的,这意味着它由许多独立可重用的代码块组成,这些组件可以单独使用,也...

    symfony_sandbox.tgz

    这个压缩包可能包含了完整的Symfony沙箱环境,它是一个预配置的开发环境,让开发者能够在本地机器上轻松地开始使用Symfony框架。 在`sf_sandbox`这个压缩包子文件中,我们可以期待找到以下关键组成部分: 1. **源...

    symfony教程

    8. 环境与工具:Symfony提供了代码生成器、单元测试与功能测试框架、测试工具条、自动化部署工具、配置即时更新以及日志功能。 Symfony的开发背景是,Fabien Potencier在2003年对当时的PHP开源开发工具进行了研究,...

    PHP 框架之Symfony

    这提高了代码的可测试性和松耦合性。 3. **模板引擎**:Twig是Symfony推荐的模板引擎,它提供了一种简洁、安全的方式来编写视图层代码,同时支持继承、过滤器和函数等高级功能。 4. **数据库抽象层**:Symfony与...

    PHP著名框架symfony 含Demo

    7. **自动化测试**:Symfony内置了对PHPUnit的支持,便于进行单元测试和功能测试,确保代码质量。 **Symfony与其他PHP框架的比较** 提到PHP框架,不能不提Zend、CodeIgniter和CakePHP。虽然这些框架各有特点,但...

    symfony安装包

    安装Symfony时,你需要一个PHP环境,推荐PHP版本为7.2或更高。在完成Composer安装后,可以使用`composer create-project symfony/symfony new_project_name`命令来创建一个新的Symfony项目,这将自动下载并安装最新...

    symfony1.2.1版本

    Symfony 1.2.1 版本对多语言环境的支持更为友好,提供了一套完善的国际化和本地化工具,使得开发者能够轻松地创建支持多种语言的应用。 6. **模板引擎** Symfony 使用 Twig 作为默认的模板引擎,提供简洁的语法和...

    symfony初学者必看的幻灯片资料

    【Symfony框架概述】 ...随着你对Symfony的深入学习,你将掌握如何定义路由、创建表单、使用服务容器、进行单元测试以及利用各种Symfony组件来增强你的应用。记得不断实践和探索,因为经验是成为Symfony专家的关键。

    symfony框架部分文档内容的翻译(介绍部分)

    这是因为Symfony框架本身内置了对这些功能的良好支持,使得开发者能够轻松地编写出安全、可靠的代码。 在开始编码之前,首先需要设置开发环境。这包括安装Symfony框架、创建应用程序,以及配置Web服务器。为了顺利...

    Symfony_Standard_Vendors_2.6.3

    这个版本还改进了命令行界面(CLI)工具`symfony`,使得开发者可以更轻松地执行常见的任务,如创建新项目、生成控制器或运行单元测试。 在解压后的文件中,你会看到一个名为`Symfony`的目录,这个目录包含了以下...

    symfony 中文手册

    Symfony 提供了多种性能优化手段,如缓存(HTTP、数据库查询缓存)、优化生成的 PHP 代码、预编译模板等,确保应用在生产环境下的高效运行。 **总结** 尽管这个中文手册是针对 Symfony 1 版本,但它的基本原理和...

    Mastering Symfony.pdf

    书中可能包含了如何设置Symfony环境、创建项目、定义路由、处理数据库交互、使用模板引擎、创建表单、处理用户认证和授权、以及性能优化等详细内容。 作者Sohail Salehi是一位全栈Web开发者,他认为普遍性原理应该...

    Symfony_book_2.7

    - **单元测试**:介绍了如何编写单元测试来确保代码的质量。 - **功能测试**:演示了如何模拟HTTP请求来进行功能性的测试。 #### 十三、验证 - **数据验证**:解释了如何在表单提交前验证用户输入的数据。 - **...

Global site tag (gtag.js) - Google Analytics