Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在MAMP中升级SQLite以使用JSON1扩展?_Php_Sqlite_Mamp_Sqlite Json1 - Fatal编程技术网

Php 如何在MAMP中升级SQLite以使用JSON1扩展?

Php 如何在MAMP中升级SQLite以使用JSON1扩展?,php,sqlite,mamp,sqlite-json1,Php,Sqlite,Mamp,Sqlite Json1,我正在使用最新的OS X El Capitan。我的妈妈是3.5职业选手。我在里面运行PHP7.0.0。您可以看到PHP的信息 我认为默认情况下,SQLite在OSX中是可用的。但是在OSX中这个SQLite的版本是3.8。自版本3.9以来,仅在SQLite中可用 所以首先,我尝试升级这个。我下载了适用于OS X的(3.12.1)并替换了/etc/bin/文件夹中的sqlite3文件。我认为这样做是因为我直接运行/usr/bin/sqlite3检查控制台。您可以在下面看到结果。该版本已升级到最新

我正在使用最新的OS X El Capitan。我的妈妈是3.5职业选手。我在里面运行PHP7.0.0。您可以看到PHP的信息

我认为默认情况下,SQLite在OSX中是可用的。但是在OSX中这个SQLite的版本是3.8。自版本3.9以来,仅在SQLite中可用

所以首先,我尝试升级这个。我下载了适用于OS X的(3.12.1)并替换了
/etc/bin/
文件夹中的
sqlite3
文件。我认为这样做是因为我直接运行
/usr/bin/sqlite3
检查控制台。您可以在下面看到结果。该版本已升级到最新版本

然后我尝试用PHP检查SQLite版本

<blockquote>
    <?php print_r(SQLite3::version()); ?>
</blockquote>
然后我坚持到了这一点。下一步我可以去哪里

更新 我通过自制成功安装了SQLite 3.12.1

brew安装sqlite3-with-json1-with-ft5

现在我可以在控制台中运行json函数了。但是仍然无法通过PHP连接API

<?php
    $db  = new SQLite3("sqlite");

    $sql = "create table user(name,phone);";
    //$db->query("SELECT load_extension('myextension.so');");
    $sql = 'insert into user (name, phone) values("oz", json(\'{"cell":"+491765", "home":"+498973"}\'));';
    $db->exec($sql);
?>

我不知道OSX,但您可能需要获取该版本的
php\u sqlite3.so
并将其放入extensions目录。如果PHP7中没有包含它,您可能会运气不佳;除非你已经严重破坏了操作系统的安全性,否则这根本不可能。您已经安装了一个二进制版本的PHP,它是根据特定版本的SQLite编译的,您所做的任何事情都不能改变这一点。我建议通过MacPorts或brew安装。@miken32谢谢,你说得对!在替换文件之前我做了备份,现在我切换回默认文件,并使用
sudo-port-install-sqlite3
更新SQLite。在console中,一切都如预期的那样,但PHP仍然给了我
3.8.10.2
这个“MAMP”PHP是针对该版本的SQLite编译的,您所做的任何事情都不会改变这一点。你需要摆脱它,安装MacPorts上的所有东西。
<?php
    $db  = new SQLite3("sqlite");

    $sql = "create table user(name,phone);";
    //$db->query("SELECT load_extension('myextension.so');");
    $sql = 'insert into user (name, phone) values("oz", json(\'{"cell":"+491765", "home":"+498973"}\'));';
    $db->exec($sql);
?>