【发布时间】:2012-11-05 09:15:12
【问题描述】:
我不确定我的服务器上是否有sqlite,所以我想用一个PDO对象来测试一下服务器是否支持sqlite。我试过了:
<?php
echo `sqlite3 -v`;
出现以下错误:Warning: shell_exec() has been disabled for security reasons
【问题讨论】:
我不确定我的服务器上是否有sqlite,所以我想用一个PDO对象来测试一下服务器是否支持sqlite。我试过了:
<?php
echo `sqlite3 -v`;
出现以下错误:Warning: shell_exec() has been disabled for security reasons
【问题讨论】:
您可以使用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";'
if(class_exists('SQLite3')){
或者你可以简单地使用:
if (extension_loaded('sqlite3')) {
// Do things
}
【讨论】:
您的提供商是否支持 sqlite3,那么您可以通过这种方式对其进行测试:
<?php
print_r(SQLite3::version());
?>
【讨论】:
它在您的php.ini中被禁用
如果您想直接运行 shell-commands,则需要在其中查找 shell_exec。
它可能在下面
disable_functions = ..., shell_exec, ...
【讨论】:
我现在确实找到了一种测试方法:
<?php
echo sqlite_libversion();
echo "<br>";
echo phpversion();
返回如下内容:
2.8.17
5.2.17
【讨论】:
sqlite_libversion 的调用将产生运行时 php 错误,您需要使用 function_exists() 来防止这种情况发生。
function_exists('sqlite_libversion'),但它需要更多的打字,对吧? :)
对于 PHP 5.4.0 及更高版本,接受的答案将无法作为旧的 SQLite 扩展 was dropped。
试试这个作为替代方案:
if (class_exists('SQLite3')) {
echo 'Sqlite PHP extension loaded';
}
【讨论】: