【发布时间】:2017-07-26 17:03:14
【问题描述】:
我已经离开 PHP 一段时间了。现在,我有一个在 IIS 上运行的 CakePHP 3.x 站点。现在,我需要安装和使用一个扩展(特别是 Couchbase 扩展,但我认为我的问题不是 Couchbase 特定的)。
我已经从 PECL (here, the 5.6 Thread Safe 32bit download, specifically) 下载了 DLL
我认为我必须将文件放在那个 zip 文件中的某个地方,然后我必须对 ExtensionList 下的 php.ini 进行更改。但我不确定将文件具体放在哪里,或者要引用哪些 DLL。
我尝试将它们放入C:\Program Files (x86)\PHP\v5.6\ext\couchbase,然后将extension=couchbase/php_couchbase.dll 添加到php.ini,重新启动IIS。然后,我编写了这个简单的 CakePHP 控制器,以确保它能够正常工作:
<?php
namespace App\Controller;
class ProfilesController extends AppController
{
public function index()
{
$cluster = new CouchbaseCluster("couchbase://127.0.0.1");
$bucket = $cluster->openBucket("sqltocb");
$query = CouchbaseN1qlQuery::fromString("SELECT b.* FROM `sqltocb` b LIMIT 10;");
$query->consistency(CouchbaseN1qlQuery::REQUEST_PLUS);
$result = $bucket->query($query);
echo json_encode($result->rows);
}
}
?>
但我收到错误Error: Class 'App\Controller\CouchbaseCluster' not found,我认为这意味着我没有正确安装扩展程序。知道我做错了什么吗?
【问题讨论】:
-
我添加了
namespace \Couchbase\Cluster; use \Couchbase\N1qlQuery;,现在我得到一个不同的错误:Error: Class 'App\Controller\CouchbaseCluster' not found -
对我来说似乎是同样的错误。你真的添加了
namespace ...,还是你输入了use ...是一个错字?对于初学者,您只需将CouchbaseCluster替换为\Couchbase\Cluster,将CouchbaseN1qlQuery替换为\Couchbase\N1qlQuery。 -
也许,我不确定您是否可以在ini文件中提供扩展名的路径,最好尝试将文件直接放在扩展文件夹中(如
extension_dir中配置的那样)...是你确定没有任何启动错误?检查您的 PHP 错误日志。还要确保您正在修改的 PHP 配置实际上是服务器使用的配置。 -
你能确定你已经加载了 couchbase 扩展吗?你能发布这些命令的输出吗?
php -i | grep 'couchbase\|json' php --modules | grep 'json\|couchbase'