通过一个PHP文件测试SQLite服务器的最快方法是什么?

5

我不确定我的服务器上是否有SQLite,因此我想使用PDO对象来测试并查看服务器是否支持SQLite。我尝试了:

<?php
echo `sqlite3 -v`;

收到以下错误:警告:由于安全原因,shell_exec()已被禁用
6个回答

9
你可以使用 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";' - Harry12345
2
如果您正在使用PHP7或更高版本,请改用PDO。这似乎已经过时,因为它比5.4更新。 - user1986815
1
这个在SQLite3上不起作用!请使用这个:if(class_exists('SQLite3')){ - Prid

8

1

在你的php.ini里被禁用了
如果你想直接运行shell命令,你需要查找里面的shell_exec

它可能在以下位置:

disable_functions = ..., shell_exec, ... 

实际上,我甚至无法通过SSH登录。这是一个免费的Web主机,我只是远程测试脚本而已。我不认为我被允许编辑php.ini文件。 - Wolfpack'08
我认为免费网络主机实际上并没有提供修改php.ini的方法。 - Anirudh Ramanathan

1

0

我现在实际上已经找到了一种测试方法:

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

返回类似于这样的内容:

2.8.17
5.2.17

5
如果 SQLite 扩展程序不存在,调用 sqlite_libversion 将会生成 PHP 运行时错误,你需要使用 function_exists() 函数来防止这种情况发生。 - Nelson
@Nelson 你也可以使用 function_exists('sqlite_libversion'),但是这样打字更多,对吧? :) - Wolfpack'08
如果您正在使用PHP7或更高版本,请改用PDO。这似乎已经过时,因为它比5.4更新。 - user1986815

0

对于PHP 5.4.0及以上版本,原先被接受的答案将不再适用,因为旧版SQLite扩展已被删除

作为替代方案,请尝试以下方法:

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

或者使用extension_loaded('sqlite3')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接