我已经离开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
,我认为这意味着我没有正确安装扩展程序。知道我做错了吗?
答案 0 :(得分:1)
我的系统版
PS> [Environment]::OSVersion
Platform ServicePack Version VersionString
-------- ----------- ------- -------------
Win32NT 10.0.14393.0 Microsoft Windows NT 10.0.14393.0
下载并解压缩PHP解释器和Couchbase扩展:
PS> Invoke-WebRequest -Uri "http://windows.php.net/downloads/releases/php-5.6.31-Win32-VC11-x86.zip" -OutFile "php-5.6.31-Win32-VC11-x86.zip"
PS> Expand-Archive "php-5.6.31-Win32-VC11-x86.zip" -DestinationPath "C:\php"
PS> Invoke-WebRequest -Uri "http://packages.couchbase.com/clients/php/php_couchbase-2.3.4-5.6-zts-vc11-x86.zip" -OutFile "php_couchbase-2.3.4-5.6-zts-vc11-x86.zip"
PS> Expand-Archive "php_couchbase-2.3.4-5.6-zts-vc11-x86.zip" -DestinationPath "C:\php\ext"
将libcouchbase.dll
复制到SAPI所在的位置(在我们的示例中,SAPI是PHP CLI,因此我们将其复制到php.exe
所在的同一目录中):
PS> copy "C:\php\ext\libcouchbase.dll" "C:\php\libcouchbase.dll"
更新配置:
PS> copy "C:\php\php.ini-development" "C:\php\php.ini"
PS> "extension=php_couchbase.dll" | Add-Content "C:\php\php.ini"
让我们检查设置:
PS> C:\php\php.exe -i 2>$null | findstr -i couchbase
couchbase
couchbase support => enabled
libcouchbase runtime version => 2.7.6 (git: e15b267765913f110fd1bbf65749c54b56875ebf)
libcouchbase headers version => 2.7.6 (git: e15b267765913f110fd1bbf65749c54b56875ebf)
igbinary transcoder => disabled (install pecl/igbinary and rebuild pecl/couchbase)
couchbase.decoder.json_arrays => 0 => 0
couchbase.encoder.compression => off => off
couchbase.encoder.compression_factor => 0.0 => 0.0
couchbase.encoder.compression_threshold => 0 => 0
couchbase.encoder.format => json => json
couchbase.log_level => WARN => WARN
如果您使用的是其他内容而不是C:\php
,请确保您的扩展目录与PHP查找扩展名的位置相匹配,因为这是默认情况下输出的内容(php.ini-development
不要覆盖它):
PS> C:\php\php.exe -i 2>$null | findstr -i extension_dir
extension_dir => C:\php\ext => C:\php\ext
使用PowerShell在主目录中执行的所有代码段,PS>
表示其提示。