Php 如何在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)并替换了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检查控制台。您可以在下面看到结果。该版本已升级到最新
/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);
?>