【问题标题】:Fastest way to test a server for sqlite via a PHP file?通过 PHP 文件测试服务器的 sqlite 的最快方法是什么?
【发布时间】:2012-11-05 09:15:12
【问题描述】:

我不确定我的服务器上是否有sqlite,所以我想用一个PDO对象来测试一下服务器是否支持sqlite。我试过了:

<?php
echo `sqlite3 -v`;

出现以下错误:Warning: shell_exec() has been disabled for security reasons

【问题讨论】:

    标签: php sqlite


    【解决方案1】:

    您可以使用function_exists() 来检查是否存在 sqlite 函数,如下所示:

    if (function_exists('sqlite_open')) {
       echo 'Sqlite PHP extension loaded';
    } 
    

    对于SQLite3,前者不起作用,因此请改用它(由 Prid 的评论提供)

    if (class_exists('SQLite3')) {
       echo 'SQLite3 extension loaded';
    }
    

    【讨论】:

    • 命令行版本:php -r 'echo function_exists("sqlite_open") ? "yes" : "no";'
    • 如果您使用的是 PHP7 或更高版本,请改用 PDO。这似乎已经过时了,因为比 5.4 更新
    • 这不适用于 SQLite3! 改用这个:if(class_exists('SQLite3')){
    【解决方案2】:

    或者你可以简单地使用:

    if (extension_loaded('sqlite3')) {
        // Do things
    }
    

    http://php.net/manual/en/function.extension-loaded.php

    【讨论】:

      【解决方案3】:

      您的提供商是否支持 sqlite3,那么您可以通过这种方式对其进行测试:

      <?php
      
      print_r(SQLite3::version());
      
      ?>
      

      请参阅手册:https://www.php.net/manual/en/book.sqlite3.php

      【讨论】:

        【解决方案4】:

        它在您的php.ini中被禁用
        如果您想直接运行 shell-commands,则需要在其中查找 shell_exec

        它可能在下面

        disable_functions = ..., shell_exec, ... 
        

        【讨论】:

        • 实际上,我什至无法通过 SSH 登录。这是一个免费的虚拟主机,我只是用来远程测试脚本。我不认为我可以编辑 php.ini。
        • 我不认为 free-webhosts 实际上给你一个修改 php.ini 的方法。
        【解决方案5】:

        我现在确实找到了一种测试方法:

        <?php
        echo sqlite_libversion();
        echo "<br>";
        echo phpversion();
        

        返回如下内容:

        2.8.17
        5.2.17
        

        【讨论】:

        • 如果 sqlite 扩展不存在,您对 sqlite_libversion 的调用将产生运行时 php 错误,您需要使用 function_exists() 来防止这种情况发生。
        • @Nelson 你也可以使用function_exists('sqlite_libversion'),但它需要更多的打字,对吧? :)
        • 如果您使用的是 PHP7 或更高版本,请改用 PDO。这似乎已经过时了,因为比 5.4 更新
        【解决方案6】:

        对于 PHP 5.4.0 及更高版本,接受的答案将无法作为旧的 SQLite 扩展 was dropped

        试试这个作为替代方案:

        if (class_exists('SQLite3')) {
           echo 'Sqlite PHP extension loaded';
        }
        

        或改用extension_loaded('sqlite3')

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-11
          • 2012-04-28
          • 1970-01-01
          • 2016-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-24
          相关资源
          最近更新 更多