[PCBC-287] Add getFromReplica Created: 02/Sep/14  Updated: 02/Sep/14

Status: Open
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 2.0.0-beta
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Implement the getFromReplica operation.




[PCBC-285] Upload updated sample code. Created: 25/Aug/14  Updated: 02/Sep/14  Resolved: 02/Sep/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0
Security Level: Public

Type: Task Priority: Major
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Forgot to upload the updates and lost the repo.




[PCBC-286] Implement Common Flags Created: 27/Aug/14  Updated: 27/Aug/14

Status: Open
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Implement the Common Flags formatting as defined by the specification.




[PCBC-276] Implement session storage provider Created: 27/Apr/14  Updated: 25/Aug/14  Resolved: 25/Aug/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Critical
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Must implement a session storage provider to allow deployments to use the PHP driver to store session information, as is done with memcached.

 Comments   
Comment by Matt Ingenthron [ 27/Apr/14 ]
+1
Comment by Harry Danes [ 29/May/14 ]
+1
Comment by Brett Lawson [ 21/Jun/14 ]
Deferred to future version due to severe technical challenges related to connection overhead and thread safety.




[PCBC-270] Add couchbase cluster compatibility to documentation Created: 25/Mar/14  Updated: 25/Aug/14  Resolved: 25/Aug/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: .next
Fix Version/s: 2.0.0-beta
Security Level: Public

Type: Improvement Priority: Trivial
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Gantt: finish-start
has to be done after JCBC-438 Add table for 1.8, 2.x and 3.x compat... Open

 Description   
We should probably specify for this given major.minor of the SDK, one of three things for Couchbase Cluster releases:
- unsupported
- supported
- supports all features

These might be an 'x', '—' and "✓" in a table, or whatever Amy comes up with.

This is, in part, planning for 3.0 including beta.

This should be based on the work done in JCBC-438, so it's blocked by that issue.




[PCBC-275] Create PHP Getting Started for 2.0 Created: 24/Apr/14  Updated: 25/Aug/14  Resolved: 25/Aug/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 2.0.0-beta
Security Level: Public

Type: Task Priority: Blocker
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by PCBC-189 [Better sample needed] Code sample of... Resolved

 Description   
Create the getting started guide for version 2.0 of the PHP SDK.




[PCBC-274] Create docs branch for PHP SDK 2.0 Created: 24/Apr/14  Updated: 25/Aug/14  Resolved: 25/Aug/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 2.0.0-beta
Security Level: Public

Type: Task Priority: Critical
Reporter: Brett Lawson Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Brett Lawson [ 25/Aug/14 ]
Completed indirectly through DITA workflow.




[PCBC-284] web request failed Created: 21/Jul/14  Updated: 25/Aug/14  Resolved: 25/Aug/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: lin luke Assignee: Brett Lawson
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Now, we have spurious failures on errors like this:

Server error during processing: ["web request failed",
 {path,"/pools/default/bucketsStreaming/Main"},
 {type,exit},
 {what,
 {timeout,
 {gen_server,call,
 [ns_cookie_manager,cookie_get]}}},
 {trace,
 [{gen_server,call,2},
 {menelaus_web,build_nodes_info_fun,3},
 {menelaus_web_buckets,
 build_bucket_node_infos,5},
 {menelaus_web_buckets,build_bucket_info,5},
 {menelaus_web,streaming_inner,3},
 {menelaus_web,handle_streaming,4},
 {menelaus_web_buckets,
 checking_bucket_access,4},
 {menelaus_web,loop,3}]}]

Any ideas where to start in debugging this?

 Comments   
Comment by Brett Lawson [ 03/Aug/14 ]
Hey lin,

This looks like an issue with Couchbase Server itself. Would you be able to provide your environment details so that I can direct this ticket to its properly project?

Thanks! Brett
Comment by Brett Lawson [ 25/Aug/14 ]
I'm going to mark this ticket as incomplete now. If you continue to encounter the issue, please provide the requested information and I'd be happy to re-open it!

Cheers, Brett




[PCBC-283] Unable to connect to second cluster while using same bucket name in PHP configuration cache Created: 04/Sep/13  Updated: 26/Jun/14  Resolved: 26/Jun/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Bug Priority: Major
Reporter: Larry Liu Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Environment:
1. PHP SDK 1.1.5
2. CentOs 6.4
3. Set up the couchbase cache config path in php.ini.
4. Couchbase Enterprise 2.1.0

Test scenario:
1. Set up two separate clusters, representing two separate data centers.
2. Set up the cache config path in php.ini (from another location outside
the clusters)
3. Set up a bucket (any type), with the same name on both clusters.
4. Create a script that first loads some data on cluster one, then
immediately loads the same on cluster two.

Expected Results:
The data should be loaded to cluster two.

Actual Results:
The data never makes it to cluster two because the cache file is by bucket
name. In the cache file, there is the map of just the first cluster.
Subsequent sets and gets use the cache file no matter what hosts are used
in the connection (in code).

 Comments   
Comment by Mark Nunberg [ 10/Jan/14 ]
This is a limitation in the config_cache algorithm. The only way to actually solve this is to place the bucket and/or cluster UUID as part of the constructor parameters, which would not be possible in the first connection attempt anyway.
Comment by Mark Nunberg [ 26/Jun/14 ]
If user intends to use multiple buckets with the same name throughout different clusters, then they must choose unique configuration cache names for each. There is absolutely no way for the client to know preemptively what cluster a bucket resides on, and if that's the cluster the user "Intended". There may be a way to know this in the future if a user passes in the bucket UUID, but that's another story..
Comment by Matt Ingenthron [ 26/Jun/14 ]
Are you saying that there is a method to have different config cache names? I believe there was not a way to set this up at the time this issue was opened. Please advise if it's something that is in a later lcb or needs to be added as a feature to PHP's use of the config cache.
Comment by Mark Nunberg [ 26/Jun/14 ]
Yes there is. I believe this feature has always been supported, however if _no_ name is provided it will default to using the bare name of the bucket as a file, but in libcouchbase it is possible to for example use: "/tmp/mybucket_cluster_1" and "/tmp/mybucket_cluster_2" for the bucket named "mybucket" which exists individually on cluster 1 and cluster 2 respectively.

This feature has been in libcouchbase since the original config cache implementation in version 2.0.5.

Unfortunately it seems PHP only allows to configure the _directory_ in which the cache file is created (and this itself is only possible at the php.ini level):

https://github.com/couchbase/php-ext-couchbase/blob/master/create.c#L402-405

I'll move this issue to PCBC
Comment by Brett Lawson [ 26/Jun/14 ]
Considering this ticket is so old. I'd suggest using the new 2.0 SDK which does not exhibit this issue due to being able to specify cacheing directly for each bucket.




[PCBC-277] Document accepted options for all methods. Created: 27/Apr/14  Updated: 21/Jun/14  Resolved: 21/Jun/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: 2.0.0-dp2
Security Level: Public

Type: Task Priority: Critical
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Currently, most methods which accept an options object do not accurately define what options are valid for which methods.




[PCBC-162] include_docs support missing Created: 11/Dec/12  Updated: 21/Jun/14  Resolved: 21/Jun/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Jeff Minard Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
viewopts.c appears to be missing include_docs as a valid parameter for the array values that get passed in for a view.

 Comments   
Comment by Jeff Minard [ 11/Dec/12 ]
I just added

# git diff
diff --git a/viewopts.c b/viewopts.c
index 612559d..4b9ce0f 100644
--- a/viewopts.c
+++ b/viewopts.c
@@ -54,6 +54,7 @@ static view_param Recognized_View_Params[] = {
        { "startkey", jval_param_handler },
        { "startkey_docid", string_param_handler },
        { "debug", bool_param_handler },
+ { "include_docs", bool_param_handler },
        { NULL, NULL }
 };


And it seems to work just fine.
Comment by Brett Lawson [ 27/Sep/13 ]
Matt: Do you see any issue with adding include_docs as above, or should we be internally doing a batched get on the results.
Comment by Trond Norbye [ 30/Sep/13 ]
Include docs should not be passed to the server, but handled internally in the library fetching the documents over the data connection to the cluster.
Comment by Brett Lawson [ 21/Jun/14 ]
This issue does not present itself with the 2.0 SDKs.




[PCBC-272] Implement SSL support Created: 18/Apr/14  Updated: 21/Jun/14  Resolved: 21/Jun/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 2.0.0-dp1
Fix Version/s: 2.0.0-dp2
Security Level: Public

Type: New Feature Priority: Blocker
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-344 add support for SSL to libcouchbase i... Resolved

 Description   
Implement SSL support




[PCBC-273] Implement datatype/wire-compression Created: 18/Apr/14  Updated: 21/Jun/14  Resolved: 21/Jun/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp2
Security Level: Public

Type: New Feature Priority: Blocker
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-390 Implement server datatype handling. Resolved

 Description   
Implement datatype/wire-compression




[PCBC-279] Update builders to use libcouchbase 2.3.1 Created: 01/May/14  Updated: 21/Jun/14  Resolved: 21/Jun/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.2
Security Level: Public

Type: Task Priority: Critical
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Update builders to use libcouchbase 2.3.1




[PCBC-281] getReplica() unpredictable behavior array_key_exists() implementation Created: 29/May/14  Updated: 30/May/14  Resolved: 29/May/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.2.2
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Harry Danes Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: - Centos 6.5 X86_64
- PHP 5.5.12
- libcouchbase version => 2.3.1


 Description   
I'm planning to use Couchbase as a PHP session storage. In the current test setup I've two Couchbase nodes with one node in "Down" state. The data isn't rebalanced yet.

Unfortunately the array which is returned in the getReplica() in unpredictable. The function array_key_exists() return sometimes bool(true) - the expected value - but sometimes the value is bool(false).

An example of the implementation is added:

PHP snippet:
==========
<?php
class CouchbaseSessionHandler implements SessionHandlerInterface
{
public function read($id)
{
         try {
                 $sessionData = $this->connection->get($id);
} catch (CouchbaseLibcouchbaseException $ex) {
try {
         $replicaDocument = $this->connection->getReplica($id, COUCHBASE_REPLICA_FIRST);
                  var_dump($id);
var_dump($replicaDocument);
var_dump(is_array($replicaDocument));
var_dump(array_key_exists($id, $replicaDocument));
....
} catch (CouchbaseLibcouchbaseException $ex) {
return null;
}
}
}

}

Output (the unexpected one):
=====================
string(26) "do8uaf0omfsjframmu95cc1dm1"
array(1) { ["do8uaf0omfsjframmu95cc1dm1"]=> array(2) { ["cas"]=> string(20) "14545271133902995456" ["value"]=> string(944) "Some sessiondata";}" } }
bool(true)
bool(false)


 Comments   
Comment by Brett Lawson [ 29/May/14 ]
Hey Harry,
This doesn't appear to be an issue with php-ext-couchbase as much as the array_key_exists implementation? What version of PHP are you using, additionally I suggest you try to test the existence of the key by doing isset($replicaDocument[$id]) and see if that works!
Cheers, Brett
Comment by Harry Danes [ 29/May/14 ]
Hey Brett,

I'm using PHP 5.5.12 / CentOS 6.5 which is provided by the IUS Community (https://iuscommunity.org/pages/Repos.html). Unfortunately the isset($replicaDocument[$id]) method has the same unpredictable behavior. To make sure it is not a bug in PHP I've created a minimalistic implementation to test the issue against the current PHP build. This snippet is running fine.

<?php
$string = 'a:1:{s:26:"do8uaf0omfsjframmu95cc1dm1";a:2:{s:3:"cas";s:20:"14545271133902995456";s:5:"value";s:944:"Some sessiondata";}}';

$id = "do8uaf0omfsjframmu95cc1dm1";
$replicaDocument = unserialize($string);

var_dump($replicaDocument);
var_dump($id);
var_dump(is_array($replicaDocument));
var_dump($replicaDocument[$id]);
var_dump(array_key_exists($id, $replicaDocument));
var_dump(isset($replicaDocument[$id]));

As a next step I've removed the SessionHandlerInterface implementation to exclude this feature. The bug is reproducible with the following lines of PHP code:

<?php
$id = "do8uaf0omfsjframmu95cc1dm1";

$couchbaseNodes = array("x:8091", "y:8091");
$connection = new Couchbase($couchbaseNodes, "xxx", "xxx", "xxx", false);

$replicaDocument = $connection->getReplica($id, array("strategy" => "select", "index" => 0));
var_dump($id);
var_dump($replicaDocument);
var_dump(is_array($replicaDocument));
var_dump(array_key_exists($id, $replicaDocument));
var_dump(isset($replicaDocument[$id]));

I will try to reproduce this problem on a different OS with a different version of PHP.

Cheers,

Harry
Comment by Brett Lawson [ 29/May/14 ]
Hey Harry,

I'm going to test out your code here and see what happens, would you be able to post the result of serialize on the array which is failing?

Cheers, Brett
Comment by Harry Danes [ 30/May/14 ]
Hi Brett,

The original array was lost, but I could reproduce it with the following dataset:

Unmodified test script:
======================
<?php
$dataSet = array(
        "id" => "srhgusrhjfrshghrdgjhrdghgjdr",
        "hashes" => array("sdgrdsgreshgrsehdtd", "ewhtruw3y785rt4ieuhtuie4")
);

$id = "do8uaf0omfsjframmu95cc1dm1";

$couchbaseNodes = array("192.168.2.15:8091", "192.168.2.16:8091");
$connection = new Couchbase($couchbaseNodes, "phpsession", "php", "phpsession", false);

// $connection->set($id, $dataSet);

$replicaDocument = $connection->getReplica($id, array("strategy" => "select", "index" => 0));
var_dump($id);
var_dump($replicaDocument);
var_dump(is_array($replicaDocument));
var_dump(array_key_exists($id, $replicaDocument));
var_dump(isset($replicaDocument[$id]));
var_dump(((string)$id) === ((string)array_keys($replicaDocument)[0]));
var_dump(array_keys($replicaDocument));

Wrong output:
================
string(26) "do8uaf0omfsjframmu95cc1dm1"
array(1) {
  ["do8uaf0omfsjframmu95cc1dm1"]=>
  array(2) {
    ["cas"]=>
    string(19) "3453070182778404864"
    ["value"]=>
    array(2) {
      ["id"]=>
      string(28) "srhgusrhjfrshghrdgjhrdghgjdr"
      ["hashes"]=>
      array(2) {
        [0]=>
        string(19) "sdgrdsgreshgrsehdtd"
        [1]=>
        string(24) "ewhtruw3y785rt4ieuhtuie4"
      }
    }
  }
}
bool(true)
bool(false) ==> should be bool(true)
bool(false) ==> should be bool(true)
bool(true)
array(1) {
  [0]=>
  string(26) "do8uaf0omfsjframmu95cc1dm1"
}

Some additional tests:

Working on:
=========
PHP 5.5.3-1ubuntu2.3 (cli) (built: Apr 4 2014 01:10:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

PHP 5.5.9-1ubuntu4 (cli) (built: Apr 9 2014 17:11:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

Ubuntu 14.04 / PHP 5.5.13 (Custom compile)

Broken:
=======
CentOS 6.5 / PHP 5.5.13 (Custom compile)

Maybe there is a problem related to the C binaries which were installed because the problem only occurs on CentOS environments.

The installed packages:

[root@localhost php-5.5.13]# rpm -qa | grep couchbase
libcouchbase2-core-2.3.1-1.x86_64
libcouchbase2-bin-2.3.1-1.x86_64
couchbase-server-2.2.0-837.x86_64
libcouchbase-devel-2.3.1-1.x86_64

Cheers,

Harry




[PCBC-280] getReplace() $strategy parameter string, array with COUCHBASE_REPLICA_SELECT not supported Created: 29/May/14  Updated: 29/May/14  Resolved: 29/May/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.2.2
Fix Version/s: .next
Security Level: Public

Type: Bug Priority: Major
Reporter: Harry Danes Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: - Centos 6.5 X86_64
- PHP 5.5.12
- libcouchbase version => 2.3.1


 Description   
According the latest documentation: http://www.couchbase.com/autodocs/couchbase-php-client-1.2.2/classes/Couchbase.html#method_getReplica

The $strategy parameter should be an string however in the documentation is an array used for the first example: $obj = $cb->getReplica("key", array("strategy" => COUCHBASE_REPLICA_SELECT, "index" => 0));

The following error is thrown when the COUCHBASE_REPLICA_SELECT strategy is used:
Fatal error: Uncaught exception 'CouchbaseIllegalArgumentsException' with message 'Strategy must be specified as a string./ Use: "first", "all" or "select")' in

The PHP snippet:
<?php
$replicaDocument = $this->connection->getReplica($id, array("strategy" => COUCHBASE_REPLICA_SELECT, "index" => 0));

 Comments   
Comment by Brett Lawson [ 29/May/14 ]
Fixed by http://review.couchbase.org/#/c/37682/.
Comment by Harry Danes [ 29/May/14 ]
Thank you for the fast update, I've tried to implement it with the updated documentation. Right now the following error is thrown:

Fatal error: Uncaught exception 'CouchbaseIllegalArgumentsException' with message 'Invalid value specified as strategy. No replica index specified'

Did I miss something?
Comment by Brett Lawson [ 29/May/14 ]
Try passing a string rather than the constant and see if that works.
Comment by Harry Danes [ 29/May/14 ]
I found the solution in the C code, this is the correct implementation. Should I update the documentation with a Pull Request?

Correct PHP implementation:
======================
<?php
$replicaDocument = $this->connection->getReplica($id, array("strategy" => "select", "index" => 0));




[PCBC-268] Publish docs for PHP SDK May 2014 release Created: 27/Feb/14  Updated: 16/May/14  Due: 04/Mar/14  Resolved: 16/May/14

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Critical
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: 1h
Time Spent: Not Specified
Original Estimate: 1h

Attachments: Zip Archive couchbase-php-client-1.2.2.zip    

 Description   
Edit and publish guide and autodocs

 Comments   
Comment by Brett Lawson [ 11/May/14 ]
Docs attached.




[PCBC-256] management operations fail Created: 05/Dec/13  Updated: 01/May/14  Resolved: 05/Dec/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.2.0
Fix Version/s: 1.2.2
Security Level: Public

Type: Bug Priority: Major
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates to

 Description   
Attempting to perform operations on management objects (such as CouchbaseClusterManager) fail due to 'Invalid Arguments'.

 Comments   
Comment by Brett Lawson [ 05/Dec/13 ]
should be fixed by: http://review.couchbase.org/30870/




[PCBC-219] Floating point error in PHP Couchbase Library 1.1 Created: 09/Apr/13  Updated: 01/May/14  Resolved: 16/Apr/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.2
Fix Version/s: 1.1.4, 1.2.2
Security Level: Public

Type: Bug Priority: Major
Reporter: Trond Norbye Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
--------------
$value = 50.00;
$couchbase->set('testvalue',$value,300);
echo "getting value now... ";
var_dump($couchbase->get('testvalue'));
-------------
float(5011)
Not 50.00.

Diving into the couchbase console, it is stored correctly. Something is wrong with the get method coming out of the PHP extension.
This is happening on any 2 decimal number with .00 as the extension. Caught this in an ecommerce application ... needless to say $ impact of giving someone $5011 instead of $50.00 is damaging.
Can anyone confirm this behavior in their environments?

 Comments   
Comment by Trond Norbye [ 16/Apr/13 ]
This was already fixed in some version before 1.1.4. I added a new testcase to verify this.

http://review.couchbase.org/25694
Comment by Shaun Tilford [ 11/Jun/13 ]
We are now running on 1.1.5 and still see the issue happening. Noted on over a dozen of our boxes here, both in development and production environments.
Comment by Trond Norbye [ 12/Jun/13 ]
What is your platform and PHP version so I can try to reproduce this?
Comment by Shaun Tilford [ 13/Jun/13 ]
PHP 5.4.12, CentOS release 5.6 (Final)
Comment by Trond Norbye [ 17/Jun/13 ]
I've had some trouble installing CentOS 5.6 locally, but so far I've tested it with success on:

Ubuntu 13.04
MacOS X
CentOS 6 (php from yum)
CentOS 5.7 (PHP 5.4.16)

I have get access to a CentOS 5.6 system to debug the problem there
Comment by Trond Norbye [ 17/Jun/13 ]
Hi, I finally got around to get access to a 5.6 box, but I doesn't fail there either:

[trondn@ip-10-36-176-84]~/compile/php-ext-couchbase/example% cat /etc/redhat-release
CentOS release 5.6 (Final)
[trondn@ip-10-36-176-84]~/compile/php-ext-couchbase/example% /opt/php/bin/php --version
PHP 5.4.16 (cli) (built: Jun 17 2013 16:44:15)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
[trondn@ip-10-36-176-84]~/compile/php-ext-couchbase/example% cat float.php
<?php

$cb = new Couchbase("localhost");

$val = 50.0;
var_dump($cb->set("foo", $val));
var_dump($cb->get("foo"));
?>
[trondn@ip-10-36-176-84]~/compile/php-ext-couchbase/example% /opt/php/bin/php -c couchbase.ini float.php
string(19) "5776353753026134016"
float(50)

Comment by Matt Ingenthron [ 18/Jun/13 ]
Note, this was 64-bit, but the bug didn't indicate whether it was observed on 32-bit or 64-bit.
Comment by Sergey Avseyev [ 10/Apr/14 ]
FYI there is a patch related http://review.couchbase.org/35567




[PCBC-101] Provide Standardized Logging Created: 24/Aug/12  Updated: 30/Apr/14  Resolved: 30/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Anonymous Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provides the consistent level of logging provided by other SDKs. Provide more information on configuring logging for developers.

 Comments   
Comment by Brett Lawson [ 30/Apr/14 ]
The PHP client itself is essentially just a wrapper around libcouchbase and does not provide a great deal of functionality to log. Libcouchbase however now supports specify varying levels of the environment variable 'LCB_LOGLEVEL' which will enable logging of internal operations that are being performed.




[PCBC-24] deploying to download locations directly from CI Created: 12/Jan/12  Updated: 24/Apr/14

Status: Open
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: .future
Security Level: Public

Type: Task Priority: Minor
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The idea here is that non-releases should automatically upload deploy to one location, and releases should automatically deploy to a different location.




[PCBC-269] Configuration cache permission issue Created: 06/Mar/14  Updated: 24/Apr/14  Resolved: 18/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: .next
Security Level: Public

Type: Task Priority: Major
Reporter: Abhishek Singh Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency

 Description   
The configuration cache directory that's created is owned by root:root. We need to chown it to apache user once and chmod dir to 777 for it to work correctly else we get segmentation fault.

Is there is a way to overcome the seg fault and make the config_cache directory globally readable(so that php-cli also works)?

 Comments   
Comment by Brett Lawson [ 06/Mar/14 ]
The configuration cache should be owned by whatever user the php instances are executing under. Would you be able to confirm that this is not the case, additionally, is it the folder or the cache file itself that has incorrect permissions assigned.
Comment by Matt Ingenthron [ 06/Mar/14 ]
I'd asked Abhishek to open this mostly because of the segfault, not because the permissions need to be changed. Let's prevent the segfault, but the location should be writeable.
Comment by Brett Lawson [ 13/Mar/14 ]
As far as I am aware, the issue here is actually due to customer configuration, the folder and file are created under whatever user the php interpreter is executing under. Additionally, automatically applying any additional permissions creates a security hole due to the fact that passwords are stored within the cache.
Comment by Brett Lawson [ 17/Mar/14 ]
Hey,

I am going to run some tests today to try and figure out why they are seeing segfaults, however, I believe that the root cause of those segfaults is an overall expectation issue. I suggest that the config directory be created outside the scope of the extension to start, as this should prevent the cache folder from being owned by root, however if PHP is running as root, then the config file itself will also be root, which brings us back to a configuration issue.

Cheers, Brett
Comment by Brett Lawson [ 17/Mar/14 ]
Just a quick add as I reread your message, if I get rid of the segfault, no doubt the scripts are not going to be able to use config cache at all, since it will not be able to access that file due to permission errors, and as I mentioned above, we can't generically expand those permissions. If the user is adamant on using config cache, they may want to either use a different file for the cache, or alternatively run those scripts under the correct user.

Cheers, Brett
Comment by Abhishek Singh [ 18/Mar/14 ]
re-opening to address seg-fault
Comment by Brett Lawson [ 18/Mar/14 ]
Segfault is fixed by: http://review.couchbase.org/#/c/34644/
Comment by Abhishek Singh [ 19/Mar/14 ]
Thanks. Is this fix going to part of next release of PHP client? what's the tentative date of next release?
Comment by Brett Lawson [ 19/Mar/14 ]
Hey Abhishek,

I will be releasing an update to the PHP client with this fix on the first tuesday of April as part of our standard release cycle.

Cheers, Brett




[PCBC-271] random burst of failed set operations returning false , with getResultCode==0 and no CouchbaseException thrown Created: 27/Mar/14  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Bug Priority: Major
Reporter: Alexander Piavlo Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: centos, apache2+mod_php, couchbase php ext 1.2.1


 Description   
WE have a cluster of about 100 apache+php servers accessing a couchbase cluster.
There are between 30K-100K operations to the cluster depending on time of the day,
of which 0.5K-1.5K are "set" operations and rest are "get"s.
Every several minutes some random php server starts to get bursts of failed "set" opertations, which return "false" (while the rest of the servers are just fine).
These burst may lasts from a several seconds to several minutes (also same node has high chances of getting several such burst every several minutes), during these burst only some portion of the "set"s fail.
Then inspecting the getResultCode it always returns 0 in such cases, and no CouchbaseException is thrown.
There are other cases then a few operations timeout, but in this case and exception is thrown and we can retrieve 23 result code. So the issue above is really weird.

relevant php couchbase ext 1.2.1 configs:
couchbase.config_cache = "/ephemeral/php/couchbase"
couchbase.skip_config_errors_on_connect = On

Any clues for debugging the issue?





[PCBC-260]  Version 1.1.5 Windows version issues Created: 10/Jan/14  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.1
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The Version 1.1.5 Windows version issues has a lot of issues some of which are posted separately.
http://windows.php.net/downloads/pecl/releases/couchbase/1.1.5/

Another being "Call to undefined function getMulti() ".







[PCBC-202] Missing documentations how to setup php client on windows 7 Created: 12/Feb/13  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.1.5
Security Level: Public

Type: Bug Priority: Minor
Reporter: Ilan Katz (Inactive) Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: windows
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Ilan Katz (Inactive) [ 12/Feb/13 ]
There are no explanations in the following link http://www.couchbase.com/develop/php/current
Comment by Trond Norbye [ 02/Apr/13 ]
Windows is currently not a "supported" platform. see PCBC-53
Comment by Brett Lawson [ 24/Apr/14 ]
This was fixed ages ago.




[PCBC-249] Add testing for Configuration Cache Created: 24/Sep/13  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Task Priority: Minor
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Add testing for Configuration Cache




[PCBC-252] change doc zipfile to create a directory of couchbase-php-client-x.y.z and be in a zipfile of similar name Created: 27/Sep/13  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.2.0
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please change doc output to be in format specified. Also, is what's needed (other than toolchain) to create docs in the repo?

 Comments   
Comment by Brett Lawson [ 24/Apr/14 ]
This will be superseded by a script to automatically deploy new versions of the docs.




[PCBC-171] Package build scripts don't build source correctly Created: 27/Dec/12  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The prefix is missing the trailing slash, so the source packages are prefixed incorrectly.

 Comments   
Comment by Matt Ingenthron [ 25/Sep/13 ]
With the move to pecl, this is no longer as important as it once was.
Comment by Trond Norbye [ 25/Sep/13 ]
my opinion is that we should drop it entirely....




[PCBC-189] [Better sample needed] Code sample of PHP Get and Lock Created: 28/Jan/13  Updated: 24/Apr/14  Resolved: 24/Apr/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Anonymous Assignee: Matt Ingenthron
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates PCBC-275 Create PHP Getting Started for 2.0 Resolved
is duplicated by PCBC-185 Create an example to show how to use ... Resolved

 Description   
One of our users asked for a code example demonstrating Get and Lock in PHP for the Developer Guide.

 Comments   
Comment by Matt Ingenthron [ 28/Jan/13 ]
A code sample can be found here:
https://github.com/couchbase/php-ext-couchbase/blob/master/tests/Get.inc#L301

The description says in the developer guide? Do you want this there or in the API reference? In any event, I'm passing it back to you to update the appropriate document.
Comment by kzeller [ 29/Jan/13 ]
It was specifically asked for the Dev Guide, but if it makes more sense, I can just add the cross reference from there to the actual example in the PHP area.
Comment by kzeller [ 30/Jan/13 ]
Note to self, this is a test case with assertions vs. example of when to use in sample application.....
Comment by kzeller [ 26/Mar/13 ]
Dependancies/Blockers:

-Reviewed code with Technical Support (Perry)

-Need a better PHP Get and Lock code sample. Should demonstrate Get and Lock in sample application context.
-Need information on why get and lock suited for the context.
Comment by kzeller [ 26/Mar/13 ]
See blockers on sample and information.
Comment by Brett Lawson [ 24/Apr/14 ]
All important docs will be in the new getting started guide.




[PCBC-261] setMulti method return type is array, not boolean as in the method description Created: 17/Jan/14  Updated: 18/Apr/14  Resolved: 20/Feb/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.1
Security Level: Public

Type: Bug Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
setMulti method return type is array, not boolean as in the method description. The setMulti returns an array of CAS values for the objects stored.

http://www.couchbase.com/autodocs/couchbase-php-client-1.2.0/classes/Couchbase.html#method_setMulti




[PCBC-199] Docs: Add link to more code examples Created: 11/Feb/13  Updated: 18/Apr/14  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.2.1
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://github.com/couchbaselabs/DeveloperDay/tree/master/PHP

 Comments   
Comment by Brett Lawson [ 27/Sep/13 ]
Added link at the bottom of the Tutorial pointing to further samples.




[PCBC-266] Expose per-node config timeout Created: 31/Jan/14  Updated: 03/Apr/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: New Feature Priority: Critical
Reporter: Mike Hancock Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: PHP 5.3/5.5, PHP Couchbase 1.2 and Libcouchbase 2.2


 Description   
I have three active nodes in my cluster and all three nodes are supplied as an array to new Couchbase.

If one of those nodes is removed from the cluster completely the client will intermittently fail to establish a connection to the cluster despite there being two remaining nodes available and healthy. It appears that the upon failure an exception is being thrown without couchbase attempting to connect to the other nodes.

This can be reproduced by providing a made up IP in a list of cluster node IP's.

There are two errors when I attempt this locally. The main error is an exception:-

'CouchbaseLibcouchbaseException' with message 'Failed to connect libcouchbase to the server: Protocol error (Failed to bootstrap in time)'

However it is always preceded by:-

[warn] event_base_loop: reentrant invocation. Only one event_base_loop can run on each event_base at once.

 Comments   
Comment by Brett Lawson [ 31/Jan/14 ]
Hey Mike,

This appears to be an issue with our underlying library (libcouchbase). I am going to reassign the ticket over there and see what we can do. I believe this is probably already fixed in the upcoming release of libcouchbase as a lot of the io handling has been refactored, but I'll want to make sure.

Cheers, Brett
Comment by Mark Nunberg [ 31/Jan/14 ]
Just because of that above message, i'm positive the issue is not in LCB itself but inside PHP. This is either fixed in the next version or a bug in the PHP driver. It seems as if lcb_wait (or run_event_loop) is being called twice.
Comment by Mike Hancock [ 31/Jan/14 ]
Hi Brett,

Thanks, hopefully you guy's will be able to sort it soon. As you can imagine it breaks high-availability if you had to manually remove a host entry in the event of a server failure.

Cheers, Mike
Comment by Mike Hancock [ 31/Jan/14 ]
Hi Mark, I recall seeing similar issues relating to libcouchbase 2.1 but from what I read it appeared those issues had been resolved.

Have either of you been able to reproduce this yourselfs (just to confirm I'm not going bonkers)?
Comment by Mark Nunberg [ 31/Jan/14 ]
You may also wish to increase the bootstrap timeout in PHP. I'm not sure if this value is actually exposed to the PHP SDK, but the default bootstrap timeout (may otherwise be known as "config timeout") is 5 seconds. If the client cannot bootstrap within that amount of time, you'll get that error message. As a workaround, perhaps create your own time-based loop and see if this fixes the issue.

In other words, if it takes five seconds to time out, that is expected behavior. Especially in the case where a node is offline, the client may end up waiting quite a bit for a proper ARP response for the specified IP address and we may wish to increase the default configuration/bootstrap timeout.

As I mentioned above though, this message "[warn] event_base_loop: reentrant invocation. Only one event_base_loop can run on each event_base at once.
" indicates a problem in the PHP SDK layer - but would not make bootstrapping not time out, if it is indeed timing out.

See also CCBC-261
Comment by Mike Hancock [ 31/Jan/14 ]
Hi Guys,

Documentation indicates that should a connection fail it should throw a warning and attempt a connection on a different server until all options are exhausted. In a production environment if it's not connected to the DB within 1 second I'd expect it to give up.

I'd say whatever is causing that error is preventing the extension from completing or starting a second connection attempt. I can alter the timeout (if that is possible) but generally I would be decreasing it, rather than increasing it. The client needs to be pretty ruthless with connection time to the nodes, so if this is in fact a fixable bug in the extension id still like to lower that timeout limit if either of you know what the ini setting is for it?
Comment by Mike Hancock [ 03/Feb/14 ]
Brett have you had a chance to reproduce/confirm this issue yet?

I'm not too fussed whether this is a libcouchbase or PHP Ext issue yet, I'm happy to help with that if I can but if you do have a moment to confirm this is a valid issue that would be great.

Thanks again. Mike
Comment by Mark Nunberg [ 03/Feb/14 ]
This is a valid issue in libcouchbase itself, but my question (and see CCBC-261 for something similar) is more about what you'd like to see happen.

I guess in addition to the total bootstrap time, we can also provide a setting which contains the maximum amount of time each bootstrap host would have to sucessfully return a configuration. The idea is that the setting provided reflects the _total_ amount of time it takes to bootstrap the cluster.

Now in the case where a specific host is down, it will typically take a "long" time to detect that the given host is unresponsive, significantly less than the 5 seconds provided. The five second timeout is usually useful when _all_ nodes are online, but some may not have a server running - in which case we immediately get an ECONNREFUSED.

Unfortunately we cannot really distinguish between "A node that is offline" and a "Node that is taking a long time to respond" until the time is up.

The bootstrap timeout _guarantees_ that the client will either bootstrap in the specified amount of time, _or_ return with an error. I'll open a new bug to provide a per-node bootstrap timeout specifier as well.
Comment by Mark Nunberg [ 03/Feb/14 ]
Created CCBC-316
Comment by Mike Hancock [ 03/Feb/14 ]
Hi Mark, thanks for taking the time to look at this.

I think you've effectively nailed it in your comment above.

libcouchbase needs two timeout options.

One for per node connection. You can default this to whatever you like, provided Brett can add support for this into the PHP extension so that it can be configured easily down to well below 0.1s if needs be.

The second would be the total amount of time before bootstrapping fails. In this case if this timeout is reached and no nodes have responded then throw an exception (same rules would apply if all connections failed to respond within the configured node-timeout and we ran out of nodes).

From a system architecture/service perspective a database cluster that always takes a long time to respond is cause for concern, but your above options would allow those with no choice to configure leeway within their client code. However, if you've got a problem with a particular node on a latency critical system then we'd consider that node "down" or "unserviceable". Allowing the client to give up on the node as quickly as possible would be essential here. You could have a cluster of 10 CB servers responding in less than 0.05s and 1 dodgy node causing around 1 in 10 requests to be either slow or dropped completely - and while you want to be made aware of the server issue, you still want to limit how badly that node is impacting performance of your software.

I think your solution would provide a great deal flexibility to either of the above situations.

My C knowledge is definitely far too low a level to be of much help with either libcouchbase or the php extension but if I can your or Brett at all please let me know.
Comment by Mark Nunberg [ 04/Feb/14 ]
Considering we've resolved CCBC-316, should we move this back to PCBC for exposing this functionality?
Comment by Mike Hancock [ 05/Feb/14 ]
Thanks for the update Mark. It would be great if Brett can get these configurable in PCBC either at runtime or in php.ini (or both) :)

Thanks again.
Comment by Mike Hancock [ 13/Feb/14 ]
Hi Mark, no word from Brett on this yet. Any chance you could move this one back to PCBC please?

Cheers

Mike
Comment by Mark Nunberg [ 13/Feb/14 ]
Sure; Brett should be back later today
Comment by Brett Lawson [ 13/Feb/14 ]
Hey Mike,

I was unfortunately travelling this week and didn't get a chance to take a look at this. I will give you an update before Monday.

Cheers, Brett
Comment by Mike Hancock [ 13/Feb/14 ]
Cheers Brett, much appreciated :)
Comment by Mike Hancock [ 04/Mar/14 ]
Hi Brett, Any news?
Comment by Brett Lawson [ 11/Mar/14 ]
Hey Mike,

Sorry for the delay, this will be available in PHP SDK 2.0.0-dp1 which should be release soon (within the next week or two). I am just finalizing some things with it at the moment.

Cheers, Brett
Comment by Mike Hancock [ 03/Apr/14 ]
Hi Brett,

Any idea what the holdup on PHP SDK 2.0.0-dp1 is. It still has a release date penned for March but no sign of it yet.

Cheers

Mike




[PCBC-96] Create compatibility layer for flags in PHP Created: 10/Aug/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: 1.1.0
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: New Feature Priority: Minor
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
In PCBC-78, we'd added a simple workaround to working with JSON from multiple languages. We need a more elegant approach though, and that'd need to consider standardizing flags or some other approach. This issue will track that need.

 Comments   
Comment by Brett Lawson [ 13/Mar/14 ]
As of 2.0.0-dp1, flags follow the standardized flag specification, additionally, transcoders are now available to perform custom encoding/decoding of data, flags and datatype information.




[PCBC-118] add functionality to use setMulti with CAS (and individual expiry) Created: 24/Sep/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Mark Nunberg Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
This would need to be called setMultiEx as the key-value array passed to setMulti itself already assumes the value is the value to serialize and store on the server.

sample:

$kv = array($key => array($value, $cas, $exp));

 Comments   
Comment by Brett Lawson [ 13/Mar/14 ]
This is fully supported in the 2.0 API available in 2.0.0-dp1.




[PCBC-222] couchbase.default_prefix setting in PHP.ini Created: 22/Apr/13  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Minor
Reporter: jtulach Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
It will be nice to have couchbase.default_prefix setting in PHP.ini to set default value of couchbase_res->prefix_key in new connections.

 Comments   
Comment by Brett Lawson [ 13/Mar/14 ]
Due to the nature of the new API's for 2.0.0, automatic prefixing is no longer supported, this would cause extreme confusion in regards to the return objects from operations (as they would be prefixed, even though your input was not).




[PCBC-93] Support for HipHop Created: 08/Aug/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.0-dp1
Fix Version/s: .future
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
https://github.com/facebook/hiphop-php/wiki/

According to Sergey we need at least write adapter code for it: https://github.com/facebook/hiphop-php/pull/244/files

 Comments   
Comment by Matt Ingenthron [ 25/Oct/12 ]
Hiphop mostly helps with CPU bound PHP, so it wouldn't provide any benefit to our exension, but it would be required by someone who wanted to use our extension with hiphop. Moving to 1.2 for tracking.
Comment by Matt Ingenthron [ 24/May/13 ]
This is not planned any time soon.
Comment by Brett Lawson [ 27/Sep/13 ]
If this is not planned any time soon, can we close this issue? Does 'not any time soon' still stand for that matter?
Comment by Matt Ingenthron [ 27/Sep/13 ]
Its okay for it to stay open even if its not planned soon at all.
Comment by Brett Lawson [ 13/Mar/14 ]
Closing as incomplete as per new workflow. 'Incomplete' should be replaced with 'Not Planned' as soon as the JIRA workflows get updated.




[PCBC-164] Streamline tests Created: 14/Dec/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.0
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Task Priority: Minor
Reporter: Mark Nunberg Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Tests right now are much slower than they should be, which also means that running them is turning into a much bigger hassle than it should be. Here are some things to do in order to make them quicker

1) Remove OO vs non-OO tests unless behavior is known to differ:

Right now all our OO functions and non-OO functions traverse exactly the same code paths (not as previously when there would be different code paths for each).

2) Move slow tests into their own categories: Simple mutation functions should not be intermixed with long things like key durability ops. These should be in separate files -- thus also allowing us to exclude them somehow (either via make test, or through runwrap/phpunit)

3) Tests which are expected to fail or are inconclusive should be marked as such.

 Comments   
Comment by Trond Norbye [ 23/Aug/13 ]
The tests should be moved to use a mock server we can control to avoid having all of the sleeps in there...
Comment by Brett Lawson [ 13/Mar/14 ]
As of 2.0.0-dp1, all tests have been rewritten and behave correctly. Additionally, the procedure paths have been removed as of 2.0.0, significantly decreasing testing time.




[PCBC-221] PHP Couchbase persistent connections shares more than expected Created: 22/Apr/13  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Bug Priority: Major
Reporter: jtulach Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
PHP Couchbase persistent connection shares all option settings (serializer, compression, prefix_key) and keeps that settings across multiple requests. This is not an expected behaviour.
 
Code:
 
<?php
 $cb1 = new Couchbase("http://192.168.0.180/default");
 $cb2 = new Couchbase("http://192.168.0.180/default");

$cb1->setOption(COUCHBASE_OPT_PREFIX_KEY,'cb1');
 $cb2->setOption(COUCHBASE_OPT_PREFIX_KEY,'cb2');
 
$cb1->set('val1','v1', 60);
 $cb2->set('val2','v2', 60);
 ?>
 
will store following keys:
 
cb2_val1
 cb2_val2
 
Moreover if you execute right after previous request following code (in another script):
 
<?php
 $cb = new Couchbase("http://192.168.0.180/default");
 $cb->set('val3','v3', 60);
 ?>
 
the code stores key:
 
cb2_val3
 
If you turn off the persistent connections, you will get more consistent results:
 
cb1_val1
 cb2_val2
 val3
 
The problem is that whole _php_couchbase_res structure is shared when using persistent connection. Possible change is to duplicate this structure in php_couchbase_create_impl. But resource destructors should be modified according to this change.


 Comments   
Comment by Brett Lawson [ 13/Mar/14 ]
Due to the underlying implementation of the SDK, it is non-trivial to allow persistent connections to separate some options. However, as of 2.0.0-dp1, any options which are 'global' across persistent connections to the same cluster are advertised as such.




[PCBC-259] fetchAll does not fetch all delayed results Created: 10/Jan/14  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
If multiple results are fetchDelayed, fetchAll does not fetch all delayed results, but the server stops running.

 Comments   
Comment by deepak vohra [ 10/Jan/14 ]
Correction, getDelayed not fetchDelayed.
Comment by Brett Lawson [ 10/Jan/14 ]
Please ensure you are looking at the latest documentation, additionally, could you provide further details on this issue, I'm not quite sure what you mean by 'the server stops running'? It would also be useful if you could post the code you are using which is causing the issue.
Comment by deepak vohra [ 10/Jan/14 ]
The issue is got with 1.1.5 Windows version
http://windows.php.net/downloads/pecl/releases/couchbase/1.1.5/
Comment by deepak vohra [ 11/Jan/14 ]
the server stops running and application gets terminated.
Comment by Brett Lawson [ 13/Mar/14 ]
getDelayed is deprecated as of 2.0.0-dp1, it is highly suggested to avoid using these functions in previous SDKs. It is suggested that you use multi operations rather than delayed operations to perform multiple operations simultaneously if performance requirements deem this neccessary.




[PCBC-267] add discussion of timeout accuracy and implementation Created: 27/Feb/14  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Since our timeouts are only as accurate as the underlying APIs/subsystems we use, we should document this for our users so they can plan accordingly. For instance, if processes aren't scheduled for a long period of time owing to CPU or memory contention... or in some cases IO doesn't happen for a long time and our timeout is IO event driven, we may not timeout to the application until later.


 Comments   
Comment by Brett Lawson [ 13/Mar/14 ]
I don't believe this should be considered an issue. I believe it is universally known that if an application is starved of cpu resources, events will not fire in a timely manner.




[PCBC-53] include windows in release Created: 22/Mar/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs, library
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Once libcouchbase is in a release for Windows, there should be a PHP release to go along with it.

 Comments   
Comment by Matt Ingenthron [ 07/Nov/12 ]
Trond: assigning to you to determine if still an issue and triage.
Comment by kzeller [ 04/Dec/12 ]
Added to RN: PHP SDK depends on Couchbase C SDK, which is not yet available on Windows. Therefore the PHP SDK is also
not on this platform.
Comment by Brett Lawson [ 13/Mar/14 ]
This has been fixed since long ago.




[PCBC-69] Add Pagination to the new 1.1.0 line. Created: 17/May/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: 1.1.0-dp1
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Major
Reporter: Jan Lehnardt (Inactive) Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
We should bake in pagination into ext/couchbase

$result = $cb->view("ddoc", "viewname");
$pager = $result->getPager($rowsPerPage = 10);
foreach($pager->nextPage() AS $page) {
  foreach($page->rows AS $row) {
    var_dump($row);
  }
}


 Comments   
Comment by Matt Ingenthron [ 07/Nov/12 ]
This should be implemented along with "logical" include_docs support.

The idea behind logical include_docs is that when fetching a non-reduced view, if the user specifies include_docs, there is a way to access the document when iterating over the results.

I'm relatively sure this may require further discussion. Grab me when you're ready to have a look at this issue.
Comment by Brett Lawson [ 27/Sep/13 ]
Further Discussion!




[PCBC-152] Release notes needed in 1.1.6 Created: 30/Nov/12  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.1, 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
As with Ruby, PHP 1.0.5 and 1.0.6 are marked as "unreleased" in Jira yet have been avialable for d/l. Release notes needed for 1.0.6

 Comments   
Comment by Perry Krug [ 28/May/13 ]
Matt, I'm seeing more releases of the PHP library (including 1.0.6, 1.1.1 and 1.1.2) that do not have release notes yes online.
Comment by Perry Krug [ 06/Jun/13 ]
Customers are seeing 1.1.5 available on PECL but no release notes after 1.1.0
Comment by Trond Norbye [ 06/Jun/13 ]
The release notes is in the release bundle from pecl :)
Comment by Brett Lawson [ 13/Mar/14 ]
Closed due to being absurdly old. All recent releases correctly specify release notes.




[PCBC-179] Couchbase PHP client library v1.1.1 returns random integer on get request Created: 09/Jan/13  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.1
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Bug Priority: Major
Reporter: Andrey Nikishaev Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: CentOS 5.6
Linux CentOS-56-64-minimal 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
PHP 5.2.17
Coucbase 1.8


 Description   
Forum thread with bug history
http://www.couchbase.com/forums/thread/couchbase-php-client-library-v1-1-1-returns-random-integer-get-request


 Comments   
Comment by Andrey Nikishaev [ 17/Jan/13 ]
if before broken get request make another request to non-existing key, then all be fine. this is hot fix for those who also has such problem.
Comment by Brett Lawson [ 27/Sep/13 ]
Do we have any information on how the value is being stored in the bucket? Is it being encoded with JSON before storage, igbinary or a raw value?
Comment by Brett Lawson [ 13/Mar/14 ]
As of 2.0.0-dp1, get calls will now return a 'MetaDoc' object as per the 2.0.0 spec.




[PCBC-184] It would be nice to support the flags sections for the memcache extension Created: 22/Jan/13  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Improvement Priority: Major
Reporter: Trond Norbye Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Simon Gavin [ 22/Jan/13 ]
I believe this is related to PCBC-180
Comment by Matt Ingenthron [ 15/Apr/13 ]
Trond is this related to PCBC-180? In other words, is this more than an improvement?
Comment by Trond Norbye [ 16/Apr/13 ]
The intention of this RFE is to fall back to try to use the flag values as specified in the memcache extension if we fail to deserialize with the currently used flag values.
Comment by Brett Lawson [ 13/Mar/14 ]
This behaviour is as closely matched as possible in 2.0.0-dp1, additionally, transcoders are available to allow specifying custom flag decoding.




[PCBC-264] increment/decrement method description does not mention the integer overflow if negative numbers are incremented/decremented. Created: 17/Jan/14  Updated: 13/Mar/14  Resolved: 13/Mar/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 2.0.0-dp1
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
If negative numbers are incremented/decremented integer overflow occurs.

$cb->set("5", -5);
   
$cb->increment("5", 1);

Should be added to method description.

 Comments   
Comment by Brett Lawson [ 13/Mar/14 ]
As of the 2.0.0-dp1, incrementing or decrementing numbers whether positive or negative work as expected.




[PCBC-254] Add replica-read to docs Created: 30/Sep/13  Updated: 20/Feb/14  Due: 01/Oct/13  Resolved: 20/Feb/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Brett Lawson Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Write a small blurb about replica read in the version 1.2 documentation once it has been created and is ready.




[PCBC-263] The value to be incremented/decremented with increment/decrement doesn't have to be a textual string. Created: 17/Jan/14  Updated: 20/Feb/14  Resolved: 20/Feb/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
"If the value isn't created by using increment / decrement, it has to be created as a "textual" string"
 http://www.couchbase.com/autodocs/couchbase-php-client-1.2.0/classes/Couchbase.html#method_increment

The value may a numeric value and doesn't have to be a textual string.

$cb->add("1", 1);
$cb->increment("1", 1);

 Comments   
Comment by Brett Lawson [ 20/Feb/14 ]
This is due to the fact that integer values are stored textually with a flag to identify them as integers during decoding.




[PCBC-262] getDelayed always returns 1 Created: 17/Jan/14  Updated: 17/Jan/14  Resolved: 17/Jan/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: PHP Client Windows version


 Description   
For the Windows version http://windows.php.net/downloads/pecl/releases/couchbase/1.1.5/. the getDelayed method always returns 1 regardless of whether the document to get is dfined in the Couchbase server or not.

 Comments   
Comment by deepak vohra [ 17/Jan/14 ]
For the Windows version http://windows.php.net/downloads/pecl/releases/couchbase/1.1.5/. the getDelayed method always returns 1 regardless of whether the document id to get delayed is defined in the Couchbase server or not.
Comment by Brett Lawson [ 17/Jan/14 ]
The getDelayed method executes a the get request at a later time, the 1 only signifies that it successfully queued the command to be executed. You must check the response which is returned later through fetch to see whether the document could be retrieved.
Comment by deepak vohra [ 17/Jan/14 ]
Thanks for clarifying that the getDelayed doesn't verify that the document got delayed is defined or not.




[PCBC-257] PHP Client Library- Array of server versions returned by getVersion() has undefined offset Created: 10/Jan/14  Updated: 11/Jan/14  Resolved: 10/Jan/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
$version=$cb->getVersion();
$arrlength=count($version);

for($x=0;$x<$arrlength;$x++)
  {
  echo $version[$x];
  echo "<br>";
  }

Exception is "Undefined offset: 0 "
But array length is 1.

 Comments   
Comment by Brett Lawson [ 10/Jan/14 ]
getVersion returns the versions of the various servers that the client is connected to. It is returning a associative array of server-names to versions, not an indexed array.

Cheers, Brett
Comment by deepak vohra [ 11/Jan/14 ]
What is the server name to use?
All of the following generate "Undefined index:" error.
'localhost'
'127.0.0.1'
IPv4




[PCBC-258] fetch() and fetchAll() not expecting args. Created: 10/Jan/14  Updated: 10/Jan/14  Resolved: 10/Jan/14

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: deepak vohra Assignee: Brett Lawson
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The methods
$object->fetch($key [, $keyn ]) Fetch the next delayed result set document
$object->fetchAll($key [, $keyn ]) Fetch all the delayed result set documents

 

are defined with a parameter, but if an arg is provided the following exception is generated:

Couchbase::fetch() expects exactly 0 parameters, 1 given
Couchbase::fetchAll() expects exactly 0 parameters, 1 given



 Comments   
Comment by Brett Lawson [ 10/Jan/14 ]
Fetch and FetchAll return results from previously execute getDelayed calls (and have no reason to accept parameters). Please see the docs for further information on the expected parameters for fetch.
https://github.com/couchbase/php-ext-couchbase/blob/master/example/couchbase-api.php#L619-L639
Comment by deepak vohra [ 10/Jan/14 ]
Why do the method descriptions indicate params?

http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-retrieve-asyncget.html#table-couchbase-sdk_php_fetch
Comment by Brett Lawson [ 10/Jan/14 ]
Please ensure you are looking at the latest documentation, the link posted above is for 1.1, however, we are currently at 1.2. I suggest you take a look at the latest documentation which is here:
https://github.com/couchbase/php-ext-couchbase/blob/master/example/couchbase-api.php#L619-L639
Comment by deepak vohra [ 10/Jan/14 ]
Thanks. The Tutorial link should be updated to 1.2. Click on Tutorial link, the 1.1 documentation is displayed.
http://www.couchbase.com/communities/php
Comment by deepak vohra [ 10/Jan/14 ]
The API Reference link on page http://www.couchbase.com/communities/php is also for 1.1, should be updated.
https://github.com/couchbase/php-ext-couchbase/blob/1.1.5/example/couchbase-api.php
Comment by deepak vohra [ 10/Jan/14 ]
The issue is got with 1.1.5 Windows version
http://windows.php.net/downloads/pecl/releases/couchbase/1.1.5/




[PCBC-255] Add PHP to Api Reference list Created: 01/Oct/13  Updated: 07/Oct/13  Resolved: 03/Oct/13

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Blocker
Reporter: Brett Lawson Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please add the PHP Autodocs to the SDK API Reference drop-down menu on the docs site.

 Comments   
Comment by Amy Kurtzman [ 07/Oct/13 ]
Added to SDK API References drop-down menu.




[PCBC-243] Generate autodocs for PHP Created: 06/Aug/13  Updated: 07/Oct/13  Resolved: 24/Sep/13

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Minor
Reporter: Amy Kurtzman Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: 4h
Time Spent: Not Specified
Original Estimate: 4h

Issue Links:
Relates to
relates to PCBC-248 Autodocs available for v1.1.5 of PHP ... Closed

 Description   
Research tools for generating API documentation for PHP client that can be put up on http://www.couchbase.com/autodocs/.

 Comments   
Comment by Dipti Borkar [ 07/Aug/13 ]

File for the current release:
https://raw.github.com/couchbase/php-ext-couchbase/1.1.5/example/couchbase-api.php
Comment by Brett Lawson [ 24/Sep/13 ]
See PCBC-248
Comment by Amy Kurtzman [ 07/Oct/13 ]
PHP API reference has been uploaded.




[PCBC-248] Autodocs available for v1.1.5 of PHP extension Created: 24/Sep/13  Updated: 07/Oct/13  Resolved: 27/Sep/13

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.5
Fix Version/s: 1.1.5
Security Level: Public

Type: Task Priority: Major
Reporter: Brett Lawson Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Zip Archive autodocs-php-1.1.5.zip    
Issue Links:
Relates to
relates to PCBC-243 Generate autodocs for PHP Closed

 Description   
The autodocs for version 1.1.5 of the PHP extension have been generated and are attached. They should be uploaded to the autodocs site.

 Comments   
Comment by Matt Ingenthron [ 27/Sep/13 ]
http://www.couchbase.com/autodocs/couchbase-php-client-1.1.5/
Comment by Amy Kurtzman [ 07/Oct/13 ]
PHP API documentation has been uploaded.




[PCBC-253] Create docs pages for release 1.2 Created: 30/Sep/13  Updated: 07/Oct/13  Due: 01/Oct/13  Resolved: 03/Oct/13

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Blocker
Reporter: Brett Lawson Assignee: Amy Kurtzman
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please create a version 1.2 on the docs site for the PHP client as we will be releasing that client version tomorrow and will need to make some docs changes.

 Comments   
Comment by Amy Kurtzman [ 02/Oct/13 ]
The pages have been created, and put in a branch called php in the https://github.com/couchbaselabs/docs-ng repository.
Comment by Brett Lawson [ 02/Oct/13 ]
Hey Amy,

The doc updates have been pushed to the PHP branch and are ready for integration. Additionally, there are Node.js docs changes which are available on the stage branch as well that should be integrated into master.

Cheers, Brett
Comment by Amy Kurtzman [ 02/Oct/13 ]
Both PHP and node.js have been merged into master. I deleted the PHP branch.
Comment by Brett Lawson [ 03/Oct/13 ]
Added and updated.




[PCBC-247] libcouchbase2-* v2.1.3 packages throw uncaught exceptions when building a Couchbase construct in PHP Created: 13/Sep/13  Updated: 02/Oct/13  Resolved: 25/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Saran Kumar Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Debian 'Squeeze'
Linux hostname 2.6.32-5-xen-amd64 #1 SMP Mon Feb 25 02:51:39 UTC 2013
x86_64 GNU/Linux


 Description   
Brief:
libcouchbase2-* v2.1.3 packages throw uncaught exceptions when building a
Couchbase construct in PHP.

Overview:
We wrote and tested some php code that needed to interact with our
couchbase cluster (running 2.1.1 enterprise). We deployed the necessary
packages to a development server and everything worked as expected. A few
months later, running through the exact same steps as taken on the
development servers (I know them to be exact because they were deployed via
chef), I deployed these packages to the production servers. Attempting to
create a Couchbase php construct on the production servers continually
resulted in the following Fatal error:

PHP Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with
message 'Failed to create libcouchbase instance'

After comparing the development (functional) systems with the production
(failing) systems, the only difference I could determine was the revision
number of the libcouchbase packages.
Dev = 2.0.7-2282 (Works)
Prod = 2.1.3-2402 (Fails)

I copied the 2.0.7 .deb files from the apt cache of a dev host to a prod
host. I purged the libcouchbase packages from the prod host and installed
these manually using dpkg -i. I re-ran my test.php and it worked fine. It
appears that the updated (2.1.3) libcouchbase packages don't work properly
with PHP.

test.php:
<?php
$cb = new Couchbase("myCouchbaseHost:8091", "Administrator",
"MyAdminPassword", "myBucketName");
?>

Failure case (prod server, 2.1.3-2402):
PHP Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with
message 'Failed to create libcouchbase instance' in /root/test.php:2
Stack trace:
#0 /root/test.php(2): Couchbase->__construct('myCouchbaseHost...',
'Administrator', 'MyAdminPassword', 'myBucketName')
#1 {main}
thrown in /root/test.php on line 2

Running the same code on a server with the older packages returns 0 (works).

I've also listed the libcouchbase package versions for both "good" and
"bad" servers.
Good:
dpkg -l | grep couch
ii libcouchbase-dev 2.0.7-2282
library for the Couchbase protocol, development files
ii libcouchbase2 2.0.7-2282
library for the Couchbase protocol
ii libcouchbase2-backend 2.0.7-2282
library for the Couchbase protocol
ii libcouchbase2-core 2.0.7-2282
library for the Couchbase protocol, core files
ii libcouchbase2-libevent 2.0.7-2282
library for the Couchbase protocol (libevent backend)

dpkg -l | grep php
ii libapache2-mod-php5 5.3.3-7+squeeze17
server-side, HTML-embedded scripting language (Apache 2 module)
ii php-pear 5.3.3-7+squeeze17
PEAR - PHP Extension and Application Repository
ii php5 5.3.3-7+squeeze15
server-side, HTML-embedded scripting language (metapackage)
ii php5-cli 5.3.3-7+squeeze17
command-line interpreter for the php5 scripting language
ii php5-common 5.3.3-7+squeeze17
Common files for packages built from the php5 source
ii php5-dev 5.3.3-7+squeeze17
Files for PHP5 module development
ii php5-suhosin 0.9.32.1-1
advanced protection module for php5

cat /etc/apt/sources.list.d/couchbase.list
deb http://packages.couchbase.com/ubuntu lucid lucid/main

Bad:
dpkg -l | grep couchbase
ii libcouchbase-dbg 2.1.3-2402
library for the Couchbase protocol, debug symbols
ii libcouchbase-dev 2.1.3-2402
library for the Couchbase protocol, development files
ii libcouchbase2-bin 2.1.3-2402
library for the Couchbase protocol
ii libcouchbase2-core 2.1.3-2402
library for the Couchbase protocol, core files
ii libcouchbase2-libevent 2.1.3-2402
library for the Couchbase protocol (libevent backend)

dpkg -l | grep php
ii libapache2-mod-php5 5.3.3-7+squeeze17
server-side, HTML-embedded scripting language (Apache 2 module)
ii php-pear 5.3.3-7+squeeze17
PEAR - PHP Extension and Application Repository
ii php5 5.3.3-7+squeeze15
server-side, HTML-embedded scripting language (metapackage)
ii php5-cli 5.3.3-7+squeeze17
command-line interpreter for the php5 scripting language
ii php5-common 5.3.3-7+squeeze17
Common files for packages built from the php5 source
ii php5-dev 5.3.3-7+squeeze17
Files for PHP5 module development
ii php5-suhosin 0.9.32.1-1
advanced protection module for php5

cat /etc/apt/sources.list.d/couchbase.list
deb http://packages.couchbase.com/ubuntu lucid lucid/main

Workaround:
Purge any installed libcouchbase2 packages and manually install the 2.0.7
packages using dpkg.

 Comments   
Comment by Mark Nunberg [ 13/Sep/13 ]
Administrator is no longer supported as a valid username for the cluster. The fact that it worked previously was an error on the SDK part. If you remove the username or provide the bucket name as the username, this issue should go away.
Comment by Trond Norbye [ 13/Sep/13 ]
As Mark pointed out it is no longer possible to authenticate as root (pretty much due to the same reason for why you shouldn't log in as root/Administrator on your UNIX/Windows server). There has also been some packaging problems in some of the libcouchbase versions that we've fixed.

I'm closing the bug report due to the above, but please reopen the bug if the problem exists if you upgrade libcouchbase to the latest version and authenticate with another user than Administrator.
Comment by Perry Krug [ 16/Sep/13 ]
Reopening on behalf of Saran
Comment by Saran Kumar [ 16/Sep/13 ]
The problem exists using the latest version of libcouchbase, authenticating with another user than Administrator.

"I anonymized the credentials in the bug report. Our cluster username is root, but for obvious reasons I didn't include any of the actual credentials in the write-up. If you follow the repro steps in the report as submitted (with any given username), you'll get a Fatal Error trying to create the Couchbase construct in PHP."
Comment by Trond Norbye [ 17/Sep/13 ]
Could you try to run: cbc stats -h myhost:8091 -b mymucket -u -mybucket -P mypassword
to see if libcouchbase works by itself..
(I'm trying to set up a squeeze in virtualbox to reproduce your problem)

Comment by Sergey Avseyev [ 17/Sep/13 ]
I've setup a bucket "mybucket" with password "secret", also I have configured my cluster to use "Administrator" name for admin account with password "password".

$ cbc version
cbc built from: libcouchbase 2.1.3 (rev. 55e4a2d9cb810eac5d58bfbf5c1b1d7397bfce76)
    using libcouchbase: 2.1.3 (libevent)

$ cat test1.php
<?php
$cb = new Couchbase("localhost:8091", "Administrator", "password", "mybucket");

$ php test1.php
PHP Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with message 'Failed to create libcouchbase instance' in /home/avsej/code/couchbase-sdk/lcb/test1.php:2
Stack trace:
#0 /home/avsej/code/couchbase-sdk/lcb/test1.php(2): Couchbase->__construct('localhost:8091', 'Administrator', 'password', 'mybucket')
#1 {main}
  thrown in /home/avsej/code/couchbase-sdk/lcb/test1.php on line 2

$ cat test2.php
<?php
$cb = new Couchbase("localhost:8091", "mybucket", "secret", "mybucket");

$ php test2.php

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux unstable (sid)
Release: unstable
Codename: sid
l
Comment by Mark Nunberg [ 17/Sep/13 ]
The username *must* be the same as the bucket. I guess we should've worded it like this rather than "Administrator is no longer supported"
Comment by Trond Norbye [ 17/Sep/13 ]
We've just pushed a patch that improves the error message in this case. I don't know if it really is the solution to your problem (given that the error message don't contain the real cause in your case)..
Comment by Sergey Avseyev [ 18/Sep/13 ]
The wording was correct actually I meant not "Administrator" string, but account with administrator powers
Comment by Matt Ingenthron [ 25/Sep/13 ]
Brett: can you see about adding tests to ensure this fails in a reasonable way given the changes in libcouchbase?
Comment by Matt Ingenthron [ 02/Oct/13 ]
Brett: is this planned to be addressed in 1.2?




[PCBC-250] Add intro to PHP SDK guide Created: 24/Sep/13  Updated: 01/Oct/13  Resolved: 01/Oct/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.0, 1.1.0
Fix Version/s: 1.0, 1.1.0
Security Level: Public

Type: Task Priority: Minor
Reporter: Amy Kurtzman Assignee: Gwen Leong (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The SDK guides currently begin with the Getting Started section. They need an introduction and meaningful web page title so customers know what guide they are reading.

For each version of the SDK guide, please:

1. Add a short introduction (# Introduction) before the Getting Started section. Sample intro:
    This guide provides information for developers who want to use the Couchbase <language> SDK to
    build applications that use Couchbase Server.

2. In the corresponding index.erb file, change the title to one that follows this naming pattern:
    Couchbase <language> SDK <version> Guide

 Comments   
Comment by Gwen Leong (Inactive) [ 01/Oct/13 ]
Added to all versions.
http://docs.couchbase.com/couchbase-sdk-php-1.1/




[PCBC-197] different parameter order for incremement Created: 05/Feb/13  Updated: 01/Oct/13  Resolved: 01/Oct/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: .future
Security Level: Public

Type: Bug Priority: Major
Reporter: Trond Norbye Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From IRC:

lachlan: can the latest php sdk (couchbase.so) still to be a drop in replacement for php memcached?
[2:39pm] trondn: lachlan: it is supposed to be compatible, but the constructor/factory methods are named differently etc..
[2:39pm] lachlan: reason I ask is the different order of parameters for increment() between memcached and couchbase sdk
[2:39pm] lachlan: Memcached::increment ( string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]] )
[2:39pm] lachlan: Couchbase - $object->increment($key [, $offset ] [, $create ] [, $expiry ] [, $initial ])
[2:39pm] trondn: hmm.. I guess that's a bug...
[2:40pm] trondn: let me file that one...
[2:40pm]

 Comments   
Comment by Trond Norbye [ 16/Apr/13 ]
This will result in an API breakage... What should we do?
Comment by Matt Ingenthron [ 25/Sep/13 ]
Brett: can you evaluate what we should do here?

Note that there is pecl/memcache and pecl/memcached. We've sort of copied the later and try to be somewhat API compatible, though there are clearly some constructor and error handling differences.
Comment by Trond Norbye [ 25/Sep/13 ]
Changing the API will cause problems from others thats already using it :S
Comment by Brett Lawson [ 27/Sep/13 ]
I don't think changing this at this point is the best options, it will just confuse our existing users as Trond said. I think this is going to be something that was err'd on when the API was developed, that we may have to live with :) RFC!




[PCBC-201] Docs: Reference installation Created: 11/Feb/13  Updated: 30/Sep/13  Resolved: 30/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Customers have lots of choices at their fingertips, and many of those choices will result in a non-functioning installation, or at least a lot of time spent figuring out what the right pieces are.

Can we please provide as much details as possible about a reference installation that we can be sure will work for a customer who is just getting started? This is outside of our support for any one operatin system, but more about telling the customer "if you install with these versions and packages, this code will work"

-OS
-"language" version (PHP 5.x, etc)
-other packages/modules required and/or tested with

 Comments   
Comment by Brett Lawson [ 30/Sep/13 ]
Our documentation does this. It specifies a 'normal' install of PHP 5.4 running on Apache, which works flawlessly if that is what is used in all of my tests.




[PCBC-244] php-ext-couchbase-1.1.5 sporatically coredumping on getMulti Created: 08/Aug/13  Updated: 30/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.5
Fix Version/s: .future
Security Level: Public

Type: Bug Priority: Critical
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
From bug reporter:
I'm noticing the following symptoms pop up on our apache webs where a child process will SegFault (11) and drop these cores. Most of them look almost identical in gdb, the r->the_request doesn't really point to any single piece of code. On one box, I've had 3 core dumps over ~20k requests in the last half hour. I don't see the same behavior on another box that handled ~7k requests over the last half hour (possibly hitting limitations?), our legacy boxes are handling ~42k requests over the same time frame. All of our boxes are RHEL6.


#0 0x00007f779e682cfc in php_couchbase_get_callback (instance=<value optimized out>, cookie=0x7f77b387c968, error=LCB_KEY_ENOENT, resp=0x7fff608742b0)
    at php-ext-couchbase-1.1.5/get.c:20
#1 0x00007f779e4619bf in ?? () from /usr/lib64/libcouchbase.so.2
#2 0x00007f779e458fce in ?? () from /usr/lib64/libcouchbase.so.2
#3 0x00007f778694eb44 in event_base_loop () from /usr/lib64/libevent-1.4.so.2
#4 0x00007f779e464998 in lcb_wait () from /usr/lib64/libcouchbase.so.2
#5 0x00007f779e684c14 in php_couchbase_get_impl (ht=<value optimized out>, return_value=<value optimized out>, return_value_ptr=0x0, this_ptr=<value optimized out>,
    return_value_used=1, multi=1, oo=1, lock=0, touch=0, replica=0) at php-ext-couchbase-1.1.5/get.c:351
#6 0x00007f779e67d3ee in zim_couchbase_getMulti (ht=<value optimized out>, return_value=<value optimized out>, return_value_ptr=<value optimized out>, this_ptr=<value optimized out>,
    return_value_used=<value optimized out>) at php-ext-couchbase-1.1.5/apidecl.c:653
#7 0x00007f77a35fa0c8 in zend_do_fcall_common_helper_SPEC (execute_data=<value optimized out>) at /usr/src/debug/php-5.3.3/Zend/zend_vm_execute.h:316
#8 0x00007f77a35d1400 in execute (op_array=0x7f77b32dd508) at /usr/src/debug/php-5.3.3/Zend/zend_vm_execute.h:107
#9 0x00007f77a35abb3d in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /usr/src/debug/php-5.3.3/Zend/zend.c:1194
#10 0x00007f77a3559da8 in php_execute_script (primary_file=0x7fff60876d10) at /usr/src/debug/php-5.3.3/main/main.c:2261
#11 0x00007f77a3634a85 in php_handler (r=0x7f77b344ac28) at /usr/src/debug/php-5.3.3/sapi/apache2handler/sapi_apache2.c:669
#12 0x00007f77adea9b00 in ap_run_handler ()
#13 0x00007f77adead3be in ap_invoke_handler ()
#14 0x00007f77adeb8a30 in ap_process_request ()
#15 0x00007f77adeb58f8 in ?? ()
#16 0x00007f77adeb1608 in ap_run_process_connection ()
#17 0x00007f77adebd807 in ?? ()
#18 0x00007f77adebdb1a in ?? ()
#19 0x00007f77adebe79c in ap_mpm_run ()
#20 0x00007f77ade95900 in main ()

 Comments   
Comment by Trond Norbye [ 26/Aug/13 ]
Could you provide the steps needed to configure such an environment? (apache config, php config etc)
Comment by Brett Lawson [ 27/Sep/13 ]
Cannot reproduce issue locally and request for further information was not responded. Will reopen if more information regarding environment can be made available.
Comment by Trond Norbye [ 30/Sep/13 ]
It _COULD_ possibly be some of the problems we've seen in some of the libcouchbase versions...
Comment by Mark Nunberg [ 30/Sep/13 ]
This has been happening on some versions of libcouchbase. I think this has been mostly fixed, or at least I haven't been able to reproduce this.

IMO the library needs something like Python where the sync function asserts that the remaining count is 0 before exiting. What's probably happening is that not all the results are returned and a stale cookie is hanging around in libcouchbase, which hasn't delivered back all the callbacks.




[PCBC-225] Failure to load JSON module, even with workaround provided via instructions Created: 23/Apr/13  Updated: 30/Sep/13  Resolved: 30/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs, library
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
On a Centos 5.8 system, I am unable to follow our instructions (http://www.couchbase.com/develop/php/current) to success.

After setting everything up, I get the following error about JSON:
NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/couchbase.so' - /usr/lib64/php/modules/couchbase.so: undefined symbol: php_json_decode in Unknown on line 0

This is even after I put the json.so as an extension in the PHP.ini file.

php -i shows the proper JSON related output:
~ $ php -i | grep json
json
json support => enabled
json version => 1.2.1

I will note that installing via the new PECL method helps to resolve this, but you still get the error if you don't include json.so in the php.ini file.

 Comments   
Comment by Sharon Barr (Inactive) [ 23/Apr/13 ]
The user is using PHP 5.4.11 and was following the steps on http://eugenioz.blogspot.com/2013/01/installing-php-54-couchbase-server-20.html
Comment by Matt Ingenthron [ 23/Apr/13 ]
Note that installing from PECL isn't for a release yet. We do have a snapshot up there though, but that needs to be installed through:

sudo pecl install channel://pecl.php.net/couchbase-1.1.4
Comment by Perry Krug [ 26/Apr/13 ]
Any progress on figuring out what was going wrong with this server?
Comment by Perry Krug [ 07/May/13 ]
Any comment/progress on this issue?
Comment by Matt Ingenthron [ 07/May/13 ]
sorry, not at the moment. I did try to ssh to the server at one point, but I think I was too late.

Can you identify where the user got the php 5.4.11? I can try that on my centos system to see if I can identify the source of the issue.
Comment by Perry Krug [ 07/May/13 ]
I'm not sure where Sharon's user got php 5.4.11 from, but this is the PHP54 package I had installed on the RightScale system that had this issue reproduced:
[root@ip-10-197-24-67 ~]# yum info php54
Loaded plugins: security
Excluding Packages from none
Finished
Available Packages
Name : php54
Arch : x86_64
Version : 5.4.4
Release : 1.ius.el5
Size : 3.1 M
Repo : rightscale-epel
Summary : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
License : PHP
Description: PHP is an HTML-embedded scripting language. PHP attempts to make it
           : easy for developers to write dynamically generated web pages. PHP
           : also offers built-in database integration for several commercial
           : and non-commercial database management systems, so writing a
           : database-enabled webpage with PHP is fairly simple. The most common
           : use of PHP coding is probably as a replacement for CGI scripts.
           :
           : The php package contains the module which adds support for the PHP
           : language to Apache HTTP Server.


What else do you need in order to identify, reproduce and resolve this?
Comment by Brett Lawson [ 27/Sep/13 ]
Do we have a RightScale account we can try to use to reproduce this issue?
Comment by Trond Norbye [ 30/Sep/13 ]
Please ensure that the json extension is loaded _before_ the couchbase extension.

If you're using a single .ini file it should look like:

extension=json.so
extension=couchbase.so

If you're using multiple ini files you must either ensure their load order, or add extension=json.so before you try to load couchbase.so (and cause it to be loaded "multiple" times).




[PCBC-251] decrement() fails when using a prefix key (Couchbase::OPT_PREFIX_KEY) Created: 27/Sep/13  Updated: 30/Sep/13  Resolved: 30/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.5
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Gabriel Glachant Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: * PHP Client library version 1.1.5 (with C library libcouchbase2-libevent-2.1.3-2402) running on Ubuntu 12.04.2 LTS (AWS EC2 instance)
* Couchbase cluster server version 2.0.1 community edition (build-170) (separate AWS EC2 instances)

Attachments: File decrement-with-prefix-key-testcase.php    

 Description   
Decrementing a key (with decrement()) from 1 to 0 while using OPT_PREFIX_KEY option fails.
The same without using OPT_PREFIX_KEY is successful.
Test case included.

 Comments   
Comment by Trond Norbye [ 30/Sep/13 ]
http://review.couchbase.org/#/c/29246/1




[PCBC-102] Provide Consistent Order of Parameters Created: 24/Aug/12  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: .future
Security Level: Public

Type: Improvement Priority: Minor
Reporter: Anonymous Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Provide consistent, predictable order for method parameters as other SDKS.

 Comments   
Comment by Brett Lawson [ 27/Sep/13 ]
The API is already defined and already follows the order of parameters of a sister extension for memcached.




[PCBC-15] Add compatibility layer for ext/memcache Created: 27/Oct/11  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: .future
Security Level: Public

Type: New Feature Priority: Major
Reporter: Jan Lehnardt (Inactive) Assignee: Brett Lawson
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
implement ext/memcache's API on top of our SDK to help user migrate.

There's a reasonably complete work in progress here: https://github.com/couchbaselabs/memcache-wrapper

 Comments   
Comment by Matt Ingenthron [ 11/Dec/12 ]
Reopening, because there's a WIP but not in a release.
Comment by Brett Lawson [ 27/Sep/13 ]
I don't believe that at this point the development and maintenance of such a library is necessary. Additionally, this bug is ages old with no further requests so I think that speaks to my point.




[PCBC-182] Update the documentation to show when a parameter is a copy or a reference Created: 17/Jan/13  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Tug Grall (Inactive) Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
When I look at the PHP core documentation I see when a parameter is a reference or not. (so we should review all our function documentation)

For example if you look at:
http://www.php.net/sort

Not only I know the type but also when it is a reference it is mentionned as &$array

I think we should do the same in our documentation, when I see our API with cas, for example:
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-retrieve-get.html#table-couchbase-sdk_php_get

it is not clear to me.



 Comments   
Comment by Trond Norbye [ 18/Jan/13 ]
As a workaround for now you should include couchbase-api.php in your project and have your IDE give you code completion ;)
Comment by Brett Lawson [ 26/Sep/13 ]
This information is now available through the API Reference which should be available shortly along with the updated documentation.




[PCBC-196] Error handling documentation Created: 05/Feb/13  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Improvement Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Please create some documentation specifying possible error/failures to operations, what they "look" like in the logs/exceptions/stack traces and what our recommendation is on how to handle them.

i.e. tmp_oom, timeouts (connection/operation/java-internal/etc), "get miss" (it's technically a failure, let's make it overly obvious what it means), CAS failure, add() failure, replace() failure,

Some of this should be covered in the API reference, but this bug is specifically for a single page where this information is aggregated that a customer/user could read about how to handle errors.

 Comments   
Comment by Brett Lawson [ 26/Sep/13 ]
This section exists within the existing documentation as of 1.1.5 under 'Using the APIs -> Error Handling'.
Comment by Brett Lawson [ 27/Sep/13 ]
I should add that the section was moved to a new block (used to be under its own section).
https://github.com/couchbaselabs/docs-ng/commit/e5942bbcc1c3414b4698799319beed18b41448de




[PCBC-190] Need documentation on timeouts available for PHP Created: 29/Jan/13  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
This link: http://www.couchbase.com/docs/couchbase-devguide-1.8/about-client-timeouts.html, states that there aren't any timeouts available for PHP

The PHP docs don't describe any.

However, I know that the underlying libcouchbase exposes at least one basic request timeout setting so either the PHP library needs some help exposing that, or it already does and we need to document it.

 Comments   
Comment by Matt Ingenthron [ 15/Apr/13 ]
Trond: Could you please review the existing documentation, recommend where we should put this information, then write up a draft and assign it back to me? Then I can review and get it over to Karen.

Let's try to do this one very soon.
Comment by Trond Norbye [ 16/Apr/13 ]
    /**
     * Retrieve the current operation timeout.
     *
     * @return integer The currently used timeout specified in usec
     */
    function getTimeout() {

    }

    /**
     * Specify an operation timeout.
     *
     * The operation timeout is the time it takes from the command is sent
     * to the cluster and the result should be returned back.
     *
     * @param integer $timeout the new operation timeout specified in usec
     */
    function setTimeout($timeout) {

    }

The keyDurability methods have a timeout parameter, and the view have the connection_timeout parameter one may set.
Comment by Perry Krug [ 16/Apr/13 ]
Thanks Trond. A few more questions:

-This bug was specifically requested for PHP...can you provide documentation on how to exercise those timeouts through PHP?
-And is there a separate timeout associated with the initial connection to 8091?
-Is there any logic/handling of a case where the comet stream becomes un responsive but is not actually reset?
Comment by Matt Ingenthron [ 25/Sep/13 ]
Brett: with your recent docs work, you can probably work out what is best for this.
Comment by Brett Lawson [ 27/Sep/13 ]
Added section to documentation.
https://github.com/couchbaselabs/docs-ng/commit/e5942bbcc1c3414b4698799319beed18b41448de




[PCBC-237] Docs needed for config_cache configuration Created: 06/Jun/13  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
We've been trying to push customers/users towards using the config_cache but at the moment there is fairly limited documentation and instructions on how and why to use it.

 Comments   
Comment by Trond Norbye [ 06/Jun/13 ]
You can find some info at https://github.com/couchbase/php-ext-couchbase/blob/master/example/couchbase.ini#L96

Ideally we should speed up the config retrieval in ns_server to get it on par with the normal get ops and drop the cache ;)
Comment by Perry Krug [ 06/Jun/13 ]
Unfortunately not all of our users are sophisticated enough to read the code from github and immediately know how to use everything...otherwise we wouldn't need any documentation in the first place right? :)

This needs to get added into the normal docs with detailed descriptions and examples
Comment by Matt Ingenthron [ 06/Jun/13 ]
I agree with the issue, but just want to caution you that we released the config cache option documented as experimental with known limitations. It's in production in a couple of places, but doesn't work for memcached buckets and we don't really have sufficient test coverage in the area where we have a lot of resubscribing.

Still, this is better than the alternative behavior (making ns_server keel over from lots of HTTP connections).

We'll document it, but it'll have to hold that experimental/known limitations for a bit.
Comment by Brett Lawson [ 24/Sep/13 ]
The file that Trond linked to is actually the example ini that contains the documentation of all the possible ini configuration values. I suspect any user intended to set up the extension would look there first for details on the possible options?
Comment by Trond Norbye [ 24/Sep/13 ]
unfortunately the people who wrote pecl wouldn't include the support for installing such configuration example files... seems like a really bad design miss..
Comment by Brett Lawson [ 27/Sep/13 ]
Added section to documentation.
https://github.com/couchbaselabs/docs-ng/commit/e5942bbcc1c3414b4698799319beed18b41448de




[PCBC-238] Docs: need examples of API calls, expected usage, expected return values Created: 06/Jun/13  Updated: 27/Sep/13  Resolved: 27/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
All of the pages under:
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-connection.html
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-store.html
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-retrieve.html
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-update.html
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-stats.html
http://www.couchbase.com/docs/couchbase-sdk-php-1.1/php-api-reference-view.html

Are pretty empty with regards to how to use these operations within PHP code, what to expect as the return codes/values, how to handle errors, etc.

 Comments   
Comment by Trond Norbye [ 26/Aug/13 ]
See:
https://github.com/couchbase/php-ext-couchbase/blob/master/example/couchbase-api.php

Or provide information on how the pages may be updated...
Comment by kzeller [ 11/Sep/13 ]
See "how to contribute content" for our new docs system:


https://github.com/couchbaselabs/docs-ng


As a team member of Couchbase labs you can directly push to stage and let us know if you need help copyediting.
Comment by Brett Lawson [ 26/Sep/13 ]
Between the documentations Tutorial, smaller sections, the API Reference (which will be made available shortly) as well as the php sample applications, I think this is more than enough for a user to get a grasp on how to use the various library operations. In regards to error handling, there is a section in the documentation that refers to this and all error codes are documented in the API reference. I don't believe that we should provide specific errors that any particular method returns as this would be frustrating to maintain over time and it is for the best if the user correctly handles all of the errors, even if there is a catch all for most of them.




[PCBC-227] setMulti doesn't support pure digit key Created: 30/Apr/13  Updated: 26/Sep/13  Resolved: 26/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.2, 1.1.4
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Knee Oh Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Ubuntu 12.04 / Apache 2 / PHP5 / libcouchbase - 2.0.5


 Description   
This bug didn't exist in 1.1.0dp5, but I've seen it before in php-memcached. The issue is when issuing a setMulti() array into CB it doesn't like it if the key is not a string.

$key = 12345
$value = 67890

$value = json_encode($value);
$array[$key] = $value;

$cb_obj->setMulti($array,$expire);

PHP Fatal error: Uncaught exception 'CouchbaseIllegalKeyException' with message 'Invalid key specified (not a string)'

test2.php(67): Couchbase->setMulti(Array, 604800)

The reference bug for php-memcached is: https://bugs.php.net/bug.php?id=59016

After experiencing the issue there I recompiled their newest version and it fixed the problem. I'm not sure if you can dovetail off of that work or not.

 Comments   
Comment by Knee Oh [ 30/Apr/13 ]
I forgot to mention, I'm loading a memcached bucket not a CB bucket.
Comment by Mark Nunberg [ 01/May/13 ]
So the problem is here:

https://github.com/couchbase/php-ext-couchbase/blob/9c1842fd5fd5c3e776ea85d85db1f7d5d5430c11/store.c#L673

Should look something like:
https://github.com/couchbase/php-ext-couchbase/blob/9c1842fd5fd5c3e776ea85d85db1f7d5d5430c11/store.c#L189

The latter is smart enough to convert 'LONG' keys into strings, whereas the former just blindly complains.
Comment by Knee Oh [ 02/May/13 ]
Additional testing yields that even if I force the key to a string like strval($key); , if the string is purely digits the library will still complain.
Comment by Mark Nunberg [ 03/May/13 ]
http://paste.scsys.co.uk/245952

I'd submit it to gerrit, but it appears to be down today.
Comment by Trond Norbye [ 03/May/13 ]
I've already got stuff for this but report in my repo.. it would probably be more efficient to synchronize with the people assigned to the bug reports before doing stuff...
Comment by Knee Oh [ 01/Jul/13 ]
Is there a patch for this? I just updated to 1.1.5 and am having the same problem with setMulti using a digit based key.
Comment by Juan Simon [ 01/Jul/13 ]
Extract from http://php.net/manual/en/language.types.array.php

Strings containing valid integers will be cast to the integer type. E.g. the key "8" will actually be stored under 8. On the other hand "08" will not be cast, as it isn't a valid decimal integer.




[PCBC-233] build php 1.1.5 for windows Created: 14/May/13  Updated: 25/Sep/13  Resolved: 25/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Matt Ingenthron Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: Zip Archive php_couchbase-1.1.5-53-nts-vc9-x86.zip     Zip Archive php_couchbase-1.1.5-53-ts-vc9-x86.zip     Zip Archive php_couchbase-1.1.5-54-nts-vc9-x86.zip     Zip Archive php_couchbase-1.1.5-54-ts-vc9-x86.zip    

 Description   
Since we've released 1.1.5, we need to get some builds of that for Windows.




[PCBC-224] Document installation instructions for Windows with Apache instead of IIS Created: 22/Apr/13  Updated: 24/Sep/13  Resolved: 24/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Brett Lawson [ 24/Sep/13 ]
Where do you see documentation on instructions for installing the extension for IIS specifically, all the instructions I can find that are specific to Windows appear to refer only to your PHP installation directory, and not a particular httpd.
Comment by Trond Norbye [ 24/Sep/13 ]
http://trondn.blogspot.no/2013/04/couchbase-php-xampp-and-windows.html
Comment by Trond Norbye [ 24/Sep/13 ]
Where can I see the fix?
Comment by Brett Lawson [ 24/Sep/13 ]
Presumably, your blog posts are the only place that IIS vs Apache are actually discussed. In all other documentation, it refers only to PHP installation folders which would be accurate no matter what http server you are using.
Comment by Trond Norbye [ 24/Sep/13 ]
Given that it might not be clear to people (hence the bug report was created) is there some way we can make the current text more clear? Not to be too offensive, but my experience with the average windows user is that they're not that willing to try to figure out what's wrong with their setup (as compared to lintendo users whos expectations are that it won't work anyway so they'll have to dig a bit deeper)...




[PCBC-185] Create an example to show how to use the getAndLock feature Created: 22/Jan/13  Updated: 24/Sep/13  Resolved: 24/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: Improvement Priority: Major
Reporter: Tug Grall (Inactive) Assignee: Matt Ingenthron
Resolution: Duplicate Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates PCBC-189 [Better sample needed] Code sample of... Resolved

 Description   
It will be useful for user to see how to use the getAndLock function in PHP here:
https://github.com/couchbase/php-ext-couchbase/tree/master/example

 Comments   
Comment by Tug Grall (Inactive) [ 22/Jan/13 ]
Coming from the community: http://www.couchbase.com/forums/thread/php-examples-code-getandlock-and-view




[PCBC-207] Support to Spatial Views in PHP SDK Created: 28/Feb/13  Updated: 24/Sep/13  Resolved: 24/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: New Feature Priority: Major
Reporter: Tug Grall (Inactive) Assignee: Matt Ingenthron
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The release 1.1.2 does not allow developer to call Spatial Views.

We need to implement it for future release

 Comments   
Comment by Matt Ingenthron [ 01/Mar/13 ]
Note that this may be a while, as spatial support is still experimental at this stage. Best approach at the moment is to use the REST API directly as documented.
Comment by Brett Lawson [ 24/Sep/13 ]
Closing this ticket until spacial support is out of experimental support stage.




[PCBC-242] Connection error when nodes go down Created: 31/Jul/13  Updated: 24/Sep/13  Resolved: 24/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Graeme Lambert Assignee: Matt Ingenthron
Resolution: Won't Fix Votes: 0
Labels: libcouchbase, php
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: PHP 5.4.9-4ubuntu2.2
Couchbase 2.1
Couchbase PHP Extension 1.1.5
libcouchbase2 2.0.7-2282


 Description   
On our test environment I've got three nodes on the local network in one cluster with one web server. I've created a virtual machine remotely to set up XDCR which worked perfectly.

I then tried to imitate a datacentre going offline by unplugging the network cable from each of the three nodes in the local cluster.

I'd already changed my PHP to be something along the lines of:

define('COUCHBASE_SERVERS', couchbase1.office:8091;couchbase2.office:8091;couchbase3.office:8091;'remote.vnode.com:8091');
define('COUCHBASE_USER', 'username');
define('COUCHBASE_PASS', 'pass');
define('COUCHBASE_DATA_BUCKET', 'data');
define('COUCHBASE_WEB_BUCKET', 'web');
define('COUCHBASE_SESSION_BUCKET', 'session');

I have three classes, one to connect to the data bucket and perform view queries amongst others, one to connect to the session bucket and store sessions in JSON format and another to cache the generated HTML in the web bucket.

Each class initiates the connection via:

$couchbase = new Couchbase(COUCHBASE_SERVERS, COUCHBASE_USER, COUCHBASE_PASS, COUCHBASE_WEB_BUCKET);

Obviously with the respective bucket.

When I unplugged the three network cables and refreshed, I get this error:

Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with message 'Failed to get a value from server: Operation timed out'


The PHP extension documentation states "The connection obtains the cluster configuration from the first host to which it has connected." which to me implies that there is some sort of loop that goes through each node to find an active node. It doesn't even seem like it's using the first node in the array as I moved the only active one to the top of the list and it still failed.

 Comments   
Comment by Graeme Lambert [ 31/Jul/13 ]
On a side note, using Nginx and the "ngx_http_enhanced_memcached_module" to retrieve the cached html from the bucket works fine with the nodes down, it still hits the remote virtual machine, it's only when it gets through to the PHP it fails.
Comment by Matt Ingenthron [ 31/Jul/13 ]
I think there must be a missing portion of the description here. If you've unplugged the servers and leave them unplugged, timeouts are to be expected. Can you update the description to indicate the specific steps?
Comment by Graeme Lambert [ 31/Jul/13 ]
Hi Matt,

Not sure if I can edit the original description?

Nothing really is missing, there is an array of 4 nodes being passed to the PHP extension and I've unplugged the network cable for the 3 in my office and left the remote on connected.

I left the nodes disconnected from the network for a good half an hour and still had the fatal error returning so I don't think it's a brief timeout issue.
Comment by Matt Ingenthron [ 31/Jul/13 ]
I'm still missing it, as your latest comment indicates four nodes, but the initial description talks about three nodes. Perhaps you can put it in these terms...

Scenario:
Four node cluster. Autofailover enabled with the 30s default failure detection time. Three buckets, two couchbase type, one memcached type. Each Couchbase bucket is configured with one replica. One application server on a separate machine running blah-de-blah workload. Unplug three of four nodes and...

Expected behavior:
After 30s, autofailover kicks in and all is well.

Observed behavior:
Regular timeouts received at the application level from the client library while the three nodes are unplugged.

- - -

Note that what I describe above isn't actually the way it works, as autofailover works only for one node, so multiple node failures would have the cluster take no action and thus you'd have timeouts. You can get back into a working state by administratively failing over the three nodes, but at the cost of lost data.
Comment by Graeme Lambert [ 01/Aug/13 ]
Hi Matt,

There are three nodes in the cluster and one node in a remote cloud in it's own cluster and I've set up XDCR for the three node cluster to replicate onto the remote cloud cluster with the single node in it. I've got the XDCR working perfectly.

I believe that you are supposed to be able to hit both datacentres concurrently with read/write requests and both will stay replicated.

Therefore I want to make sure that when a datacentre goes down, the site will operate fine connecting to the remote cloud cluster and when the 3 node cluster comes back up it will start to receive the writes that the remote cluster has had during that time.

Please bare in mind this is by no means a production use case, but I'm trying to get as close to it with servers in the office and remote cloud nodes for XDCR. I wouldn't have just a single node in that cluster but for testing it out it's all I need.
Comment by Marty Schoch [ 02/Aug/13 ]
Saw this in IRC and decided to take a look. I believe the problem is that the Couchbase client is being initialized with the address of server nodes that actually belong to 2 different clusters. My understanding is that this is not supported. You would need to configure 2 separate Couchbase clients, each configured to talk to one of the clusters. Managing which interactions go to which cluster is then up to your application.




[PCBC-223] Docs: Instructions to find php.ini incorrect Created: 22/Apr/13  Updated: 23/Sep/13  Resolved: 23/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.2
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Brett Lawson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/develop/php/current

"You will add the couchbase.so extension to your php.ini file. To find where your php.inifile is, try php -i | grep extension_dir or look at your <?php phpinfo() ?> output. Edit your php.ini to include these two lines:"

Not correct..."extension_dir" should be "Configuration" and there should be another set of instructions for finding the extension directory

 Comments   
Comment by kzeller [ 24/Apr/13 ]
Looks like this is broken again despite the info on JSON library for linux. Do you have the correct way to do this?
Comment by Trond Norbye [ 06/Jun/13 ]
Perry is right here. If you read the sentence it tells you how to locate your php.ini file, but the grep there tells you where the _extensions_ are installed.

The correct entry should look like something like:

trond@ok> php -i | grep Configuration
Configuration File (php.ini) Path => /etc
Loaded Configuration File => (none)

and as you see on the first line of output there it prints out the correct value.
Comment by Perry Krug [ 06/Jun/13 ]
Yes, and then there should be another set of instructions on how to find the extension_dir.
Comment by kzeller [ 19/Jul/13 ]
Instructions for finding the extension_dir are:


Comment by Trond Norbye [ 26/Aug/13 ]

trond@ok> php -i | grep extension_dir ~
extension_dir => /usr/lib/php/extensions/no-debug-non-zts-20090626 => /usr/lib/php/extensions/no-debug-non-zts-20090626
Comment by kzeller [ 26/Aug/13 ]
Gwen- Let's discuss. This is the drupal page needing updates again.
Comment by Gwen Leong (Inactive) [ 06/Sep/13 ]
This link doesn't direct me to the file in question.
Also, I cannot find the text as originally quoted in here: http://docs.pub.couchbase.com/couchbase-sdk-php-1.1/

Has this been rewritten? What action should I take?
Comment by kzeller [ 06/Sep/13 ]
You should add this instruction:

php -i | grep extension_dir ~
extension_dir => /usr/lib/php/extensions/no-debug-non-zts-20090626 => /usr/lib/php/extensions/no-debug-non-zts-20090626

to the page here:

http://www.couchbase.com/communities/php/getting-started


Remember you are set up with edit permissions on Drupal.
Comment by Gwen Leong (Inactive) [ 20/Sep/13 ]
Edited under Step 1.2: Update your PHP Configuration
Please confirm this is the correct formatting.
http://www.couchbase.com/communities/php/getting-started
Comment by Perry Krug [ 23/Sep/13 ]
This page still looks a bit odd:
-there needs to be a space after the first php.ini (between php.ini and file)
-It says "or look at your output"...what output?
-the example for finding an extension dir looks like it has a duplicate entry in there, and it should also show the location of a default php install, not something with no-debug-non-zts...etc, etc
Comment by Gwen Leong (Inactive) [ 23/Sep/13 ]
- Will do.
- I will change "look at your output" to "look at your <?php phpinfo() ?> output." (Judging from the context of the original bug reference)
- Tell me exactly (word for word) what needs to go there.
Comment by Matt Ingenthron [ 23/Sep/13 ]
Brett: can you review this and get it more settled?
Comment by Brett Lawson [ 23/Sep/13 ]
The page has been updated and is in draft ready for publishing, I fixed the text on how to locate your php.ini as well as fixing the 'check your output' which was missing entity encoding of its special characters.




[PCBC-220] error with "default" bucket. named bucket work OK: CouchbaseLibcouchbaseException Failed to get a value from server: Network error. Created: 13/Apr/13  Updated: 12/Sep/13  Resolved: 03/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: thanhbv Assignee: Trond Norbye
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: centos 6.4 x86_64. php-fpm 5.4.13-1.el6.remi.x86_64

Attachments: Text File CouchbaseLibcouchbaseException.txt     Text File no-error-if-downgrade.txt     File repos.repo     Text File yum.log    

 Description   
php-ext-couchbase version: https://github.com/couchbase/php-ext-couchbase/commit/ff2ed89c6255a2f364640b62d9930732ce597075

duplicates to #PCBC-169, but with php 5.4

I use php-fpm 5.4.13-1.el6.remi.x86_64 ( with nginx-1.3.15-1.el6.ngx.x86_64).
It work OK yesterday. But today: CouchbaseLibcouchbaseException Failed to get a value from server: Network error.

  $bk = isset($_GET['bk'])? $_GET['bk'] : 'default';
  $cb = new Couchbase("$host:8091", 'user', 'password', $bk);
  $a = $cb->get('aaa'); //-> error here

Error with /test.php (& /test.php?bk=default). But OK with /test.php?bk=mybk

After: # service php-fpm restart
Then all (with 'default' & with named bucket) test OK.

I can not reproduce this error now.

 Comments   
Comment by thanhbv [ 15/Apr/13 ]
yesterday, I update:
php-fpm-5.4.14-1.el6.remi.x86_64, php-ext-couchbase 0f54569ebe34a80e225b85c7dcb5813ed86e351e
tested OK.

Now, the same error as above occur. After restart service php-fpm => OK

Note:
I run php-fpm (with couchbase ext) on a VMWare virtual machine and couchbase server 2.0.1 (enterprise edition build-170) on a physical machine.
The VM is sometime suspended, sometime NOT connect to the server. (But when I run test, of course 2 machine is connected)
Comment by Matt Ingenthron [ 15/Apr/13 ]
I suspect the network connection is getting dropped because of the idling time.

Trond: do we need to worry about reconnect?

Thanhbv: do you use persistent connections? What does your constructor for the client look like?
Comment by Trond Norbye [ 16/Apr/13 ]
I don't think you can use persistent connections in a configuration where you suspend and resume the vm so we won't look into this if thats the case. What is the output from the couchbase section of "php -i" ?
Comment by thanhbv [ 22/Apr/13 ]
Yes, I think it use persistent connection.
phpinfo():
_______________
couchbase
couchbase support enabled
version 1.1.4dp1
libcouchbase version 2.0.5
json support yes
fastlz support yes
zlib support yes

Directive Local Value Master Value
couchbase.compression_factor 1.3 1.3
couchbase.compression_threshold 2000 2000
couchbase.compressor none none
couchbase.config_cache /var/cache/cb /var/cache/cb
couchbase.durability_default_poll_interval 100000 100000
couchbase.durability_default_timeout 40000000 40000000
couchbase.instance.persistent On On
couchbase.restflush On On
couchbase.serializer json_array json_array
couchbase.view_timeout 75 75
_______________

thank you.
Comment by thanhbv [ 03/Sep/13 ]
I have just update libcouchbase2.
And now CouchbaseLibcouchbaseException every time!
Comment by thanhbv [ 03/Sep/13 ]
If I use java sdk => success:

[cpr@dev tmp]$ sudo yum install http://repo.scala-sbt.org/scalasbt/sbt-native-packages/org/scala-sbt/sbt/0.13.0/sbt.rpm

[cpr@dev tmp]$ mkdir -p cb-scala/src/main/scala && cd cb-scala

[cpr@dev cb-scala]$ nano build.sbt

##################################
name := "cb-scala"

version := "1.0"

scalaVersion := "2.10.2"

resolvers += "Couchbase Maven Repository" at "http://files.couchbase.com/maven2"

libraryDependencies += "couchbase" % "couchbase-client" % "1.1.9"

##################################

[cpr@dev cb-scala]$ nano src/main/scala/Main.scala

//////////////////////////////////
import collection.JavaConverters._
import java.net.URI
import com.couchbase.client.CouchbaseClient
 
object Main extends App {
    val uris = List("192.168.1.200:8091").map(uri => URI.create(s"http://$uri/pools")).asJava
    val cb = new CouchbaseClient(uris, "<bucket>", "<password>")
 
    cb.set("aaa", 0, "value?")
    println(cb.get("aaa"))
}
//////////////////////////////////

[cpr@dev cb-scala]$ sbt run
Loading /usr/share/sbt/bin/sbt-launch-lib.bash
[info] Set current project to cb-scala (in build file:/tmp/cb-scala/)
[info] Compiling 1 Scala source to /tmp/cb-scala/target/scala-2.10/classes...
[info] Running Main
2013-09-03 16:13:45.186 INFO com.couchbase.client.CouchbaseConnection: Added {QA sa=/192.168.1.200:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2013-09-03 16:13:45.193 INFO com.couchbase.client.CouchbaseConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@6c25add2
2013-09-03 16:13:45.229 INFO com.couchbase.client.ViewConnection: Added dev.sandinh.net to connect queue
2013-09-03 16:13:45.230 INFO com.couchbase.client.CouchbaseClient: viewmode property isn't defined. Setting viewmode to production mode
2013-09-03 16:13:45.272 INFO net.spy.memcached.auth.AuthThread: Authenticated to dev.sandinh.net/192.168.1.200:11210
value?
Comment by Trond Norbye [ 03/Sep/13 ]
which libcouchbase2 packages do you have installed? and does this problem occur if you never suspend the vm's?
Comment by thanhbv [ 03/Sep/13 ]
If I downgrade libcouchbase as in the attached file => no error!
Comment by Trond Norbye [ 03/Sep/13 ]
Given the last comment in the bug report I assume this is a duplicate of https://www.couchbase.com/issues/browse/CCBC-246
Comment by thanhbv [ 12/Sep/13 ]
>>which libcouchbase2 packages do you have installed?
you can found it in the attached file no-error-if-downgrade.txt
The error occured before the commands in no-error-if-downgrade.txt. And the after running the commands => no error.

>>and does this problem occur if you never suspend the vm's?
I'm sorry. From the first comment on 03/Sep/13, the issue is NOT relate to vm (I run Centos 6.4 on a physical machine)
It is probably a different issue (than the original one).

>>I assume this is a duplicate of CCBC-246
I don't think so. Because CCBC-246 say that if I install libcouchbase2-libevent => no error. But with the following packages installed, the error still occur:
libcouchbase2-core-2.1.2-1.x86_64
libcouchbase2-libevent-2.1.2-1.x86_64
libcouchbase-devel-2.1.2-1.x86_64
couchbase-server-2.1.1-764.x86_64
Comment by thanhbv [ 12/Sep/13 ]
I have just test on a clean system, still error:
1. install centos 6.4 x86_64 minimal
2. yum update
3. add some yum repos as in file repos.repo
4. yum clean all && yum update
5. yum install couchbase-server-enterprise_x86_64_2.1.1.rpm
6. yum install libcouchbase2-libevent libcouchbase-devel php php-pecl-couchbase
(I attached file /var/log/yum.log to this issue)
7. service iptables stop
then use browser, goto <host>:8091 to setup couchbase
8. remove bucket default. add bucket fodi (type: couchbase, has password). I don't know if this step is related to the issue, just note here all step I do.
9. create file cb.php as in step 2 in http://www.couchbase.com/communities/php/getting-started
10. php cb.php => error:

PHP Fatal error: Uncaught exception 'CouchbaseLibcouchbaseException' with message 'Failed to create libcouchbase instance' in /root/dl/cb.php:3
Stack trace:
#0 /root/dl/cb.php(3): Couchbase->__construct('127.0.0.1:8091', 'user', 'password', 'fodi')
#1 {main}
  thrown in /root/dl/cb.php on line 3




[PCBC-195] Write the Getting Started with PHP on Linux section of the essentials guide Created: 04/Feb/13  Updated: 06/Sep/13  Resolved: 06/Sep/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: MC Brown (Inactive) Assignee: Michael Nitschinger
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Write the Getting started with PHP on Linux (Redhat and Debian) section of the Essentials Guide

Needs to cover:

Installation of the PHP Couchbase extensions and pre-requisites
Writing your first (small) app using Couchbase and PHP

Submissions should be to MC, either through the couchbase/docs repo, or direct to MC in whatever format suits. Must include both the text and images.

 Comments   
Comment by Matt Ingenthron [ 06/Sep/13 ]
We've deferred essentials guides indefinitely.




[PCBC-226] HTTP needs to be a POST after a certain size Created: 29/Apr/13  Updated: 31/Aug/13  Resolved: 31/Aug/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.2
Fix Version/s: 1.2.0
Security Level: Public

Type: Task Priority: Major
Reporter: Robert Dominy Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: Mac OS X, CentOS


 Description   
I'm querying a view using the PHP SDK using the view method, $object->view($ddocname [, $viewname ] [, $viewoptions ]), and finding that when I pass in a certain number of keys in the viewoptions param, the method silently fails and just returns null. It appears that 164 keys is OK, but 179 is not. I didn't see documentation indicating a key limit and would expect an error if there were.
Here's the call:
// 179 keys breaks, 164 OK
$result = $this->cb->view(self::VIEW_DAP,'modelcount',array('keys' => $keys,
'group_level' => 2,
'group' => true,
'skip' => 0)

Here's a link to the forum thread I created:
http://www.couchbase.com/forums/thread/key-limit-view-queries

As you'll see in the responses, this is probably a much more general issue that the PHP SDK uses GET calls that have a string length limit. It seems that the SDK should either use POSTs to avoid the limit or document the size limits in the documentation.

 Comments   
Comment by Matt Ingenthron [ 15/Aug/13 ]
Thanks for the report. That's definitely an issue and we'll need to get it addressed.

Having said that, what's the reason for doing a view query with a large number of keys? Usually you'll get much better performance from getMulti():
https://github.com/couchbase/php-ext-couchbase/blob/1.1.5/example/couchbase-api.php#L337

Generally, there's not a case I can think of where I'd do this through a view, but maybe you have something in mind that I can't think of.
Comment by Trond Norbye [ 26/Aug/13 ]
Lets just use POST all the time to have a single code path to test..
Comment by Trond Norbye [ 31/Aug/13 ]
http://review.couchbase.org/#/c/28721/




[PCBC-125] Tests: require get validation to also ensure CAS is expected value Created: 28/Sep/12  Updated: 26/Aug/13  Resolved: 26/Aug/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Task Priority: Major
Reporter: Mark Nunberg Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Trond Norbye [ 26/Aug/13 ]
This was fixed a while back.. don't know when




[PCBC-240] touch method non-functional in pecl package Created: 15/Jul/13  Updated: 26/Aug/13  Resolved: 26/Aug/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Martijn Otto Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: ALL


 Description   
The touch method does not work properly in the pecl package. It works correctly in the latest package before pecl, though.

 Comments   
Comment by Trond Norbye [ 26/Aug/13 ]
Could you elaborate about what you mean by not work properly?
Comment by Trond Norbye [ 26/Aug/13 ]
I tried to use the version in pecl on my Ubuntu box, and it works as expected. The "only" problem I found is that the return type in the API reference is wrong. It returns the CAS value on success and not a boolean expression. http://review.couchbase.org/#/c/28568/1

If you had other problems with the operation please reopen the bug with more information




[PCBC-246] Expose lcb_cntl(..., LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT, ..) Created: 21/Aug/13  Updated: 26/Aug/13  Resolved: 26/Aug/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Task Priority: Major
Reporter: Sergey Avseyev Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Dependency
depends on CCBC-192 Failure to handle host that has been ... Resolved

 Description   
There is a special mode which helps users to manage stale bootstrap node list.

Use case:

1) setup and deploy application to bootstrap with node1,node2,node3
2) over the time, admins eject node1 and it might still be listening on 8091
3) the application should skip LCB_AUTH_ERROR errors and LCB_BUCKET_ENOENT on node1 and continue with node2

Obviously after successful bootstrap, the list of "known" nodes will be updated for the particular connection. The problem in on-disk configuration

 Comments   
Comment by Trond Norbye [ 23/Aug/13 ]
Should this be the default behavior or not?
Comment by Sergey Avseyev [ 23/Aug/13 ]
I think no. Because we shouldn't add more magic. Right now, the user will get an error and has enough information to figure out why it happened, and to search for possible workarounds. But skipping such nodes by default, might make things more weird, for example if "dead" will became part of new cluster with matching bucket name and password. I know it is possible in current situation, but the user more likely will get errors during transition phase.
Comment by Trond Norbye [ 26/Aug/13 ]
http://review.couchbase.org/28566




[PCBC-180] PHP Warning: Couchbase::get() could not decompress value (bad content) Created: 17/Jan/13  Updated: 26/Aug/13  Resolved: 26/Aug/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.1
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Critical
Reporter: Andrey Nikishaev Assignee: Trond Norbye
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: CentOS 5.6
Linux CentOS-56-64-minimal 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
PHP 5.2.17
Coucbase 1.8


 Description   
Forum thread with bug history
http://www.couchbase.com/forums/thread/php-warning-couchbaseget-could-not-decompress-value-bad-content

 Comments   
Comment by Trond Norbye [ 16/Apr/13 ]
Could you post some code sample I could use to reproduce the error? What kind of data are you storing, do you encode them in any special way etc?
Comment by Trond Norbye [ 26/Aug/13 ]
Its been open since 16th of April without more information




[PCBC-241] compilation warnings on extension Created: 24/Jul/13  Updated: 26/Aug/13  Resolved: 26/Aug/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.2.0
Security Level: Public

Type: Task Priority: Minor
Reporter: Matt Ingenthron Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: git describe:
1.1.5-8-gf7b3b70

cc --version:
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.4.0
Thread model: posix


 Description   
With my nice new compiler, we now get some compilation warnings on php-ext-couchbase. None look critical, but should be reviewed.

 cc -I. -I/Users/ingenthr/src/php-ext-couchbase -DPHP_ATOM_INC -I/Users/ingenthr/src/php-ext-couchbase/include -I/Users/ingenthr/src/php-ext-couchbase/main -I/Users/ingenthr/src/php-ext-couchbase -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /Users/ingenthr/src/php-ext-couchbase/replica.c -fno-common -DPIC -o .libs/replica.o
/Users/ingenthr/src/php-ext-couchbase/replica.c:41:9: warning: passing 'const void *' to parameter of type 'void *'
      discards qualifiers [-Wincompatible-pointer-types]
                        free(ret->data.v.v0.key);
                             ^~~~~~~~~~~~~~~~~~
/usr/include/stdlib.h:160:18: note: passing argument to parameter here
void free(void *);
                    ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:42:9: warning: passing 'const void *' to parameter of type 'void *'
      discards qualifiers [-Wincompatible-pointer-types]
                        free(ret->data.v.v0.bytes);
                             ^~~~~~~~~~~~~~~~~~~~
/usr/include/stdlib.h:160:18: note: passing argument to parameter here
void free(void *);
                    ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:46:10: warning: passing 'const void *' to parameter of type 'void *'
      discards qualifiers [-Wincompatible-pointer-types]
                memcpy(ret->data.v.v0.key, r->v.v0.key, ret->data.v.v0.nkey);
                       ^~~~~~~~~~~~~~~~~~
/usr/include/secure/_string.h:55:30: note: expanded from macro 'memcpy'
   ? __builtin___memcpy_chk (dest, src, len, __darwin_obsz0 (dest)) \
                             ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:46:10: warning: passing 'const void *' to parameter of type 'void *'
      discards qualifiers [-Wincompatible-pointer-types]
                memcpy(ret->data.v.v0.key, r->v.v0.key, ret->data.v.v0.nkey);
                       ^~~~~~~~~~~~~~~~~~
/usr/include/secure/_string.h:56:27: note: expanded from macro 'memcpy'
   : __inline_memcpy_chk (dest, src, len))
                          ^
/usr/include/secure/_string.h:59:28: note: passing argument to parameter '__dest' here
__inline_memcpy_chk (void *__dest, const void *__src, size_t __len)
                           ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:47:10: warning: passing 'const void *' to parameter of type 'void *'
      discards qualifiers [-Wincompatible-pointer-types]
                memcpy(ret->data.v.v0.bytes, r->v.v0.bytes, ret->data.v.v0.nbytes);
                       ^~~~~~~~~~~~~~~~~~~~
/usr/include/secure/_string.h:55:30: note: expanded from macro 'memcpy'
   ? __builtin___memcpy_chk (dest, src, len, __darwin_obsz0 (dest)) \
                             ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:47:10: warning: passing 'const void *' to parameter of type 'void *'
      discards qualifiers [-Wincompatible-pointer-types]
                memcpy(ret->data.v.v0.bytes, r->v.v0.bytes, ret->data.v.v0.nbytes);
                       ^~~~~~~~~~~~~~~~~~~~
/usr/include/secure/_string.h:56:27: note: expanded from macro 'memcpy'
   : __inline_memcpy_chk (dest, src, len))
                          ^
/usr/include/secure/_string.h:59:28: note: passing argument to parameter '__dest' here
__inline_memcpy_chk (void *__dest, const void *__src, size_t __len)
                           ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:142:32: warning: passing 'const char *' to parameter of type 'char *'
      discards qualifiers [-Wincompatible-pointer-types]
                add_assoc_string(r, "error", lcb_strerror(NULL, e->error), 1);
                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/php/Zend/zend_API.h:371:111: note: expanded from macro 'add_assoc_string'
  ...__key, __str, __duplicate) add_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate)
                                                                                   ^
/usr/include/php/Zend/zend_API.h:362:82: note: passing argument to parameter 'str' here
ZEND_API int add_assoc_string_ex(zval *arg, const char *key, uint key_len, char *str, int duplicate);
                                                                                 ^
/Users/ingenthr/src/php-ext-couchbase/replica.c:358:56: warning: passing 'lcb_get_replica_cmd_t **'
      (aka 'struct lcb_get_replica_cmd_st **') to parameter of type 'const lcb_get_replica_cmd_t *const *' (aka 'const
      struct lcb_get_replica_cmd_st *const *') discards qualifiers in nested pointer types [-Wincompatible-pointer-types]
        retval = lcb_get_replica(instance, &cookie, num_docs, commands);
                                                              ^~~~~~~~
/usr/local/include/libcouchbase/couchbase.h:314:69: note: passing argument to parameter 'commands' here
                                const lcb_get_replica_cmd_t *const *commands);
                                                                    ^


 Comments   
Comment by Trond Norbye [ 23/Aug/13 ]
http://review.couchbase.org/28531




[PCBC-72] getDelayed seems to return a Boolean not a "string (Binary object)" as the docs state Created: 13/Jun/12  Updated: 26/Aug/13  Resolved: 27/Nov/12

Status: Closed
Project: Couchbase PHP client library
Component/s: docs, library
Affects Version/s: 1.0.3
Fix Version/s: 1.1.0
Security Level: Public

Type: Bug Priority: Critical
Reporter: Benjamin Young Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
I'm not sure if this is a doc error or a code error, but the documentation for getDelayed [1] states it returns a "string (Binary object)" when in fact it returns a Boolean.

The return of a Boolean is likely the intended response as getDelayed implies the use of a callback.

I've marked this issue as being related to both docs & library, though, in case I've missed something.

[1] http://www.couchbase.com/docs/couchbase-sdk-php-1.0/api-reference-retrieve.html#table-couchbase-sdk_php_get-delayed

 Comments   
Comment by Matt Ingenthron [ 07/Nov/12 ]
Mark: Please determine if this issue is still valid and help me triage it into the appropriate release. I've assigned it to you for triage, not necessarily to fix it.
Comment by Matt Ingenthron [ 12/Nov/12 ]
Trond: Since this may be just a matter of getting correct documentation, I've bumped the priority so we try to triage it and decide where it belongs. Please allocate just a few minutes to it when you can.

If it's a documentation fix that's needed, let's pass it along to Karen.

If you're unsure what was originally intended, it may make sense to look at pecl-memcached.
Comment by Trond Norbye [ 27/Nov/12 ]
According to the code (and the documentation for pecl::memcached:getDelayed) it should return a boolean value.
Comment by kzeller [ 27/Nov/12 ]
I think this fixes it:

      <dcall id="get-delayed" call="getDelayed" inherit="none">

        <m_title>
          Get a key to be fetched later
        </m_title>

        <args>

          <argument inherit="keyn"/>

          <argument inherit="with_cas" optional="yes"/>

          <argument inherit="callback" optional="yes"/>

        </args>
       <return inherit="boolean"/>
      </dcall>
Comment by kzeller [ 27/Nov/12 ]
    <dcall id="get-delayed" call="getDelayed" inherit="none">

        <m_title>
          Get a key to be fetched later
        </m_title>

        <args>

          <argument inherit="keyn"/>

          <argument inherit="with_cas" optional="yes"/>

          <argument inherit="callback" optional="yes"/>

        </args>
       <return inherit="boolean"/>
      </dcall>




[PCBC-60] how to provide redundancy with setting up client not clear Created: 26/Mar/12  Updated: 26/Aug/13  Resolved: 07/Nov/12

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.0.1
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Matt Ingenthron
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
A user says they could not determine how to set up the PHP client for failover per the docs. I think that means there is confusion about what is actually happening when setting up the URLs.

From the user:
i didn't find anything in the examples about adding multiple servers kelye @ 2:19
like new Couchbase ('10.1.1.1:1121, 10.1.1.2:1121'. .. etc 2:19
for failover 2:19

I've explained things, but perhaps we need to do more at the documentation level?

 Comments   
Comment by Sergey Avseyev [ 10/Apr/12 ]
Currently PHP client uses libcouchbase as the backend. And there are two points where it can load the list of backup URLs.

1. Creation of the connection. https://github.com/couchbase/libcouchbase/blob/master/include/libcouchbase/couchbase.h#L72-L76
This means that you can specify a list of the nodes, where first will be used for immediate connection, others for list of the backup nodes.

2. On cluster upgrade, each time cluster push updated configuration, the connection instances save list of the known nodes, and if the initial node fails, it picks next from that list.

In PHP client you can just use host parameter to pass the list of the nodes




[PCBC-74] Constructor segfaults when http:// is used in URL Created: 14/Jun/12  Updated: 26/Aug/13  Resolved: 07/Sep/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.0.4
Fix Version/s: 1.1.0-dp4
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
This works:

$cb = new Couchbase("184.72.2.230:8091"); // uses the default bucket


This segfaults:

$cb = new Couchbase("http://184.72.2.230:8091"); // uses the default bucket

At least some better message to the user would be nice.

Can we also check this for all of our other libraries? The standard way of doing things used to be to put the full URL on there...and still is for .NET at least.

 Comments   
Comment by Mark Nunberg [ 07/Sep/12 ]
Passes tests on pending 1.0.6, assuming fixed




[PCBC-75] segfault when using persistent connections Created: 17/Jun/12  Updated: 26/Aug/13  Resolved: 10/Sep/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.0.4
Fix Version/s: 1.1.0-dp4
Security Level: Public

Type: Bug Priority: Major
Reporter: Matt Ingenthron Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: CentOS 5.8 w/ php 5.3.3; Mac OS 10.6 w/ php 5.3.8

Issue Links:
Duplicate

 Description   
When configuring the PHP client for persistent connections, a segmentation fault is seen upon the second request for a connection within an Apache MPM environment.

The test script is as follows:

<?php

$iterations = 1;
$time_start = microtime(true);
//$cb = new Couchbase("192.168.1.200:8091"); // uses the default bucket
$cb = new Couchbase("192.168.1.200:8091", "newcachebucket", "password", "newcachebucket", true); // uses the default bucket

for ($i = 1; $i <=$iterations; $i++) {
  $cb->set("a" . $i, 1);
  //var_dump($cb->get("a" . $i));
  $cb->get("a" . $i);
}

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Did $iterations iterations in $time seconds\n";


If making a request of this script with curl, I see the following:
[root@centosb httpd]# for i in {1..16}; do curl http://localhost/;done
Did 1 iterations in 0.009458065032959 seconds

Did 1 iterations in 0.0088930130004883 seconds

Did 1 iterations in 0.0089321136474609 seconds

Did 1 iterations in 0.0089690685272217 seconds

Did 1 iterations in 0.0090639591217041 seconds

Did 1 iterations in 0.0095789432525635 seconds

Did 1 iterations in 0.0090429782867432 seconds

Did 1 iterations in 0.0094709396362305 seconds

curl: (52) Empty reply from server
curl: (52) Empty reply from server
curl: (52) Empty reply from server
curl: (52) Empty reply from server
curl: (52) Empty reply from server
curl: (52) Empty reply from server
curl: (52) Empty reply from server
curl: (52) Empty reply from server

The error_log shows lots of:
[Sun Jun 17 19:22:32 2012] [notice] child pid 2031 exit signal Segmentation fault (11)


 Comments   
Comment by Matt Ingenthron [ 17/Jun/12 ]
I have been able to reproduce this with a simple script that just tries to create the connection twice with persistent connections to two variables. It will crash after printing out the first message about iterations. I gathered a bit of info under gdb. This is CentOS 5.8, 64-bit.

The script:
<?php

$iterations = 1;
//$cb = new Couchbase("192.168.1.200:8091"); // uses the default bucket
//$cb = new Couchbase("192.168.1.200:8091", "newcachebucket", "password", "newcachebucket", true); // uses the default bucket
$cb = new Couchbase("192.168.1.200:8091", "default", "", "default", true); // uses the default bucket


$time_start = microtime(true);

for ($i = 1; $i <=$iterations; $i++) {
  $cb->set("a" . $i, 1);
  //var_dump($cb->get("a" . $i));
  $cb->get("a" . $i);
}


$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Did $iterations iterations in $time seconds\n";

$cb2 = new Couchbase("192.168.1.200:8091", "default", "", "default", true); // uses the default bucket
$result = $cb->get("a1");

echo "Got a $result";


A gdb session:
(gdb) run rebuildconn.php
Starting program: /usr/bin/php rebuildconn.php
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000
[Thread debugging using libthread_db enabled]
Did 1 iterations in 0.0008080005645752 seconds

Program received signal SIGSEGV, Segmentation fault.
0x000000000057bb57 in ?? ()
(gdb) bt
#0 0x000000000057bb57 in ?? ()
#1 0x00002aaaae90c588 in php_couchbase_create_impl (ht=<value optimized out>,
    return_value=0xaa3fc8, return_value_ptr=<value optimized out>,
    this_ptr=0xaa39e0, return_value_used=<value optimized out>, oo=1)
    at /home/sdkbuild/workspace/php-ext-couchbase-1.0/label/sdk_centos55_64/couchbase.c:1301
#2 0x00000000005e7889 in ?? ()
#3 0x00000000005bd94b in execute ()
#4 0x0000000000599ef5 in zend_execute_scripts ()
#5 0x000000000054ad18 in php_execute_script ()
#6 0x0000000000622c7e in ?? ()
#7 0x0000003fcfe1d994 in __libc_start_main () from /lib64/libc.so.6
#8 0x0000000000421789 in _start ()
Comment by Matt Ingenthron [ 17/Jun/12 ]
gdb on Mac OS had more symbols and thus was more helpful in pointing out the error:

Reading symbols for shared libraries warning: Could not find object file "/private/tmp/homebrew-libcouchbase-2-iCQa/libcouchbase-1.1.0dp2/src/.libs/libcouchbase_libevent_la-plugin-libevent.o" - no debug information available for "src/plugin-libevent.c".

.. done
Did 1 iterations in 0.0047118663787842 seconds

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x00000002028e2370
0x000000010031ef3a in _zend_mm_free_int ()
(gdb) bt
#0 0x000000010031ef3a in _zend_mm_free_int ()
#1 0x0000000100d54357 in php_couchbase_create_impl ()
#2 0x000000010035fcf3 in zend_do_fcall_common_helper_SPEC ()
#3 0x000000010035f301 in execute ()
#4 0x000000010033a50c in zend_execute_scripts ()
#5 0x00000001002ebbdd in php_execute_script ()
#6 0x00000001003b7a30 in main ()

Looks like we're trying to free something already null?
Comment by Xinchen Hui [ 18/Jun/12 ]
I am so sorry for this mistake.

since I have lost a lot behind the gerrit, I give the fix here.

change the couchbase.c

 if (LIBCOUCHBASE_SUCCESS != (retval = libcouchbase_get_last_error(handle))) {
                                if (url) {
                                        php_url_free(url);
                                }
                                php_error_docref(NULL TSRMLS_CC, E_WARNING,
                                                "Failed to connect libcouchbase to server: %s", libcouchbase_strerror(handle, retval));
                                libcouchbase_destroy(handle);
                                pefree(couchbase_res, persistent); //<- notice here, change the efree to this (pefree)
                                RETURN_FALSE;
                        }


thanks
Comment by Brian Gruber [ 02/Jul/12 ]
I still get a segfault if I use the modified code, so currently, I can't use the php library in production because it is SOOO much slower than memcached module.
Comment by Matt Ingenthron [ 02/Jul/12 ]
Brian: I have a tested fix which has excellent performance in my testing. Any chance I can pass you some bits and you can verify them for me? We'll be spinning this into a release here soon, and I'd appreciate your feedback on it as well.

Just comment here and let me know which OS/Architecture, and I'll email some bits to you.
Comment by Sergey Avseyev [ 10/Aug/12 ]
http://review.couchbase.org/17386
Comment by Matt Ingenthron [ 12/Aug/12 ]
Fixed by Xinchen, integrated by me.
Comment by Tim Smith (Inactive) [ 06/Sep/12 ]
This bug is still present in version 1.0.5. When creating a connection as follows:

$user = "default";
$password = "";
$bucketName = "default";
$persistConnection = true;
$cb = new Couchbase("127.0.0.1:8091", $user, $password, $bucketName, $persistConnection);

Here is a stack trace from GDB attached to the php-fpm process:

[root@localhost html]# ps auxww|grep php
root 24805 0.0 0.0 97000 3988 pts/1 T 07:41 0:00 vim cb.php
root 25189 0.0 0.0 97012 4024 pts/2 T 09:27 0:00 vim /usr/share/nginx/html/cb.php
root 25254 0.0 0.0 139460 3160 ? Ss 09:34 0:00 php-fpm: master process (/etc/php-fpm.conf)
apache 25256 0.0 0.0 143932 4452 ? S 09:34 0:00 php-fpm: pool www
apache 25257 0.0 0.0 143932 4452 ? S 09:34 0:00 php-fpm: pool www
apache 25259 0.0 0.0 143932 4452 ? S 09:34 0:00 php-fpm: pool www
apache 25260 0.0 0.0 143932 4452 ? S 09:34 0:00 php-fpm: pool www
apache 25261 0.0 0.0 139460 2852 ? S 09:34 0:00 php-fpm: pool www
apache 25262 0.0 0.0 139460 2852 ? S 09:34 0:00 php-fpm: pool www
root 25264 0.0 0.0 61192 768 pts/1 S+ 09:34 0:00 grep php
[root@localhost html]# gdb -p 25257
GNU gdb (GDB) CentOS (7.0.1-42.el5.centos)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Attaching to process 25257
Reading symbols from /usr/sbin/php-fpm...(no debugging symbols found)...done.
Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /usr/lib64/libgmp.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libgmp.so.3
Reading symbols from /usr/lib64/libbz2.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libbz2.so.1
Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnsl.so.1
Reading symbols from /usr/lib64/libxml2.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libxml2.so.2
Reading symbols from /usr/lib64/libgssapi_krb5.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libgssapi_krb5.so.2
Reading symbols from /usr/lib64/libkrb5.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libkrb5.so.3
Reading symbols from /usr/lib64/libk5crypto.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libk5crypto.so.3
Reading symbols from /lib64/libcom_err.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcom_err.so.2
Reading symbols from /lib64/libssl.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libssl.so.6
Reading symbols from /lib64/libcrypto.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypto.so.6
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libresolv.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libresolv.so.2
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.
[Thread debugging using libthread_db enabled]
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /usr/lib64/libkrb5support.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libkrb5support.so.0
Reading symbols from /lib64/libkeyutils.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libkeyutils.so.1
Reading symbols from /lib64/libselinux.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libselinux.so.1
Reading symbols from /lib64/libsepol.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libsepol.so.1
Reading symbols from /usr/lib64/php/modules/curl.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/php/modules/curl.so
Reading symbols from /usr/lib64/libcurl.so.3...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libcurl.so.3
Reading symbols from /usr/lib64/libidn.so.11...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libidn.so.11
Reading symbols from /usr/lib64/php/modules/fileinfo.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/php/modules/fileinfo.so
Reading symbols from /usr/lib64/php/modules/json.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/php/modules/json.so
Reading symbols from /usr/lib64/php/modules/phar.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/php/modules/phar.so
Reading symbols from /usr/lib64/php/modules/zip.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/php/modules/zip.so
Reading symbols from /root/php-lib/php-ext-couchbase/couchbase.so...done.
Loaded symbols for /root/php-lib/php-ext-couchbase/couchbase.so
Reading symbols from /usr/lib64/libcouchbase.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libcouchbase.so.1
Reading symbols from /usr/lib64/libvbucket.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libvbucket.so.1
Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnss_files.so.2
Reading symbols from /usr/lib64/libcouchbase_libevent.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libcouchbase_libevent.so.1
Reading symbols from /usr/lib64/libevent-1.4.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libevent-1.4.so.2

warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff63eaf000
0x0000003407cd3a70 in __accept_nocancel () from /lib64/libc.so.6
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x00000000005a064b in ?? ()
(gdb) thread apply all bt full

Thread 1 (Thread 0x2b050e0dfff0 (LWP 25257)):
#0 0x00000000005a064b in ?? ()
No symbol table info available.
#1 0x00002b05123fab17 in php_couchbase_create_impl (
    ht=<value optimized out>, return_value=0x2f23a30,
    return_value_ptr=<value optimized out>, this_ptr=0x2f237c8,
    return_value_used=<value optimized out>, oo=1)
    at /home/sdkbuild/workspace/php-ext-couchbase-1.0/label/sdk_centos55_64/couchbase.c:1539
        handle = <value optimized out>
        retval = 49429160
        ctx = 0x5
        iops = <value optimized out>
        couchbase_res = 0x2f4f5a0
        hashed_key = 0x2f23b08 ""
        hashed_key_len = 41
        user = 0x2f24c70 "default"
        passwd = 0x2f23650 ""
        bucket = 0x2f23708 "default"
        user_len = 7
        passwd_len = 0
        bucket_len = 7
        persistent = 1 '\001'
        zvhosts = 0x2f239e0
        cparams = {nodes = 0x2f23a60, tail = 0x2f23a60,
          host_string = 0x2f23aa8 "\370:\362\002",
          bucket = 0x2f23708 "default", username = 0x2f24c70 "default",
          password = 0x0}
#2 0x00000000005e6829 in ?? ()
No symbol table info available.
#3 0x00000000005e592b in execute ()
No symbol table info available.
#4 0x00000000005bed65 in zend_execute_scripts ()
No symbol table info available.
#5 0x000000000056e3b8 in php_execute_script ()
No symbol table info available.
#6 0x0000000000650db4 in ?? ()
No symbol table info available.
#7 0x0000003407c1d994 in __libc_start_main () from /lib64/libc.so.6
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#8 0x00000000004220b9 in _start ()
No symbol table info available.
(gdb)
Comment by Tim Smith (Inactive) [ 06/Sep/12 ]
In case it's helpful, here is phpinfo():


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">
body {background-color: #ffffff; color: #000000;}
body, td, th, h1, h2 {font-family: sans-serif;}
pre {margin: 0px; font-family: monospace;}
a:link {color: #000099; text-decoration: none; background-color: #ffffff;}
a:hover {text-decoration: underline;}
table {border-collapse: collapse;}
.center {text-align: center;}
.center table { margin-left: auto; margin-right: auto; text-align: left;}
.center th { text-align: center !important; }
td, th { border: 1px solid #000000; font-size: 75%; vertical-align: baseline;}
h1 {font-size: 150%;}
h2 {font-size: 125%;}
.p {text-align: left;}
.e {background-color: #ccccff; font-weight: bold; color: #000000;}
.h {background-color: #9999cc; font-weight: bold; color: #000000;}
.v {background-color: #cccccc; color: #000000;}
.vr {background-color: #cccccc; text-align: right; color: #000000;}
img {float: right; border: 0px;}
hr {width: 600px; background-color: #cccccc; border: 0px; height: 1px; color: #000000;}
</style>
<title>phpinfo()</title><meta name="ROBOTS" content="NOINDEX,NOFOLLOW,NOARCHIVE" /></head>
<body><div class="center">
<table border="0" cellpadding="3" width="600">
<tr class="h"><td>
<a href="http://www.php.net/"><img border="0" src="/info.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42" alt="PHP Logo" /></a><h1 class="p">PHP Version 5.3.15</h1>
</td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr><td class="e">System </td><td class="v">Linux localhost.localdomain 2.6.18-308.4.1.el5 #1 SMP Tue Apr 17 17:08:00 EDT 2012 x86_64 </td></tr>
<tr><td class="e">Build Date </td><td class="v">Jul 20 2012 13:12:10 </td></tr>
<tr><td class="e">Configure Command </td><td class="v"> &#039;./configure&#039; &#039;--build=x86_64-redhat-linux-gnu&#039; &#039;--host=x86_64-redhat-linux-gnu&#039; &#039;--target=x86_64-redhat-linux-gnu&#039; &#039;--program-prefix=&#039; &#039;--prefix=/usr&#039; &#039;--exec-prefix=/usr&#039; &#039;--bindir=/usr/bin&#039; &#039;--sbindir=/usr/sbin&#039; &#039;--sysconfdir=/etc&#039; &#039;--datadir=/usr/share&#039; &#039;--includedir=/usr/include&#039; &#039;--libdir=/usr/lib64&#039; &#039;--libexecdir=/usr/libexec&#039; &#039;--localstatedir=/var&#039; &#039;--sharedstatedir=/usr/com&#039; &#039;--mandir=/usr/share/man&#039; &#039;--infodir=/usr/share/info&#039; &#039;--cache-file=../config.cache&#039; &#039;--with-libdir=lib64&#039; &#039;--with-config-file-path=/etc&#039; &#039;--with-config-file-scan-dir=/etc/php.d&#039; &#039;--disable-debug&#039; &#039;--with-pic&#039; &#039;--disable-rpath&#039; &#039;--without-pear&#039; &#039;--with-bz2&#039; &#039;--with-exec-dir=/usr/bin&#039; &#039;--with-freetype-dir=/usr&#039; &#039;--with-png-dir=/usr&#039; &#039;--with-xpm-dir=/usr&#039; &#039;--enable-gd-native-ttf&#039; &#039;--with-t1lib=/usr&#039; &#039;--without-gdbm&#039; &#039;--with-gettext&#039; &#039;--with-gmp&#039; &#039;--with-iconv&#039; &#039;--with-jpeg-dir=/usr&#039; &#039;--with-openssl&#039; &#039;--with-zlib&#039; &#039;--with-layout=GNU&#039; &#039;--enable-exif&#039; &#039;--enable-ftp&#039; &#039;--enable-magic-quotes&#039; &#039;--enable-sockets&#039; &#039;--with-kerberos&#039; &#039;--enable-ucd-snmp-hack&#039; &#039;--enable-shmop&#039; &#039;--enable-calendar&#039; &#039;--with-libxml-dir=/usr&#039; &#039;--enable-xml&#039; &#039;--with-system-tzdata&#039; &#039;--with-mhash&#039; &#039;--enable-fpm&#039; &#039;--libdir=/usr/lib64/php&#039; &#039;--without-mysql&#039; &#039;--disable-pdo&#039; &#039;--without-gd&#039; &#039;--disable-dom&#039; &#039;--disable-dba&#039; &#039;--without-unixODBC&#039; &#039;--disable-xmlreader&#039; &#039;--disable-xmlwriter&#039; &#039;--without-sqlite&#039; &#039;--without-sqlite3&#039; &#039;--disable-phar&#039; &#039;--disable-fileinfo&#039; &#039;--disable-json&#039; &#039;--without-pspell&#039; &#039;--disable-wddx&#039; &#039;--without-curl&#039; &#039;--disable-posix&#039; &#039;--disable-sysvmsg&#039; &#039;--disable-sysvshm&#039; &#039;--disable-sysvsem&#039; </td></tr>
<tr><td class="e">Server API </td><td class="v">FPM/FastCGI </td></tr>
<tr><td class="e">Virtual Directory Support </td><td class="v">disabled </td></tr>
<tr><td class="e">Configuration File (php.ini) Path </td><td class="v">/etc </td></tr>
<tr><td class="e">Loaded Configuration File </td><td class="v">/etc/php.ini </td></tr>
<tr><td class="e">Scan this dir for additional .ini files </td><td class="v">/etc/php.d </td></tr>
<tr><td class="e">Additional .ini files parsed </td><td class="v">/etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/json.ini,
/etc/php.d/phar.ini,
/etc/php.d/zip.ini,
/etc/php.d/zzz-couchbase.ini
 </td></tr>
<tr><td class="e">PHP API </td><td class="v">20090626 </td></tr>
<tr><td class="e">PHP Extension </td><td class="v">20090626 </td></tr>
<tr><td class="e">Zend Extension </td><td class="v">220090626 </td></tr>
<tr><td class="e">Zend Extension Build </td><td class="v">API220090626,NTS </td></tr>
<tr><td class="e">PHP Extension Build </td><td class="v">API20090626,NTS </td></tr>
<tr><td class="e">Debug Build </td><td class="v">no </td></tr>
<tr><td class="e">Thread Safety </td><td class="v">disabled </td></tr>
<tr><td class="e">Zend Memory Manager </td><td class="v">enabled </td></tr>
<tr><td class="e">Zend Multibyte Support </td><td class="v">disabled </td></tr>
<tr><td class="e">IPv6 Support </td><td class="v">enabled </td></tr>
<tr><td class="e">Registered PHP Streams </td><td class="v">https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip </td></tr>
<tr><td class="e">Registered Stream Socket Transports </td><td class="v">tcp, udp, unix, udg, ssl, sslv3, sslv2, tls </td></tr>
<tr><td class="e">Registered Stream Filters </td><td class="v">zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="v"><td>
<a href="http://www.zend.com/"><img border="0" src="/info.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42" alt="Zend logo" /></a>
This program makes use of the Zend Scripting Language Engine:<br />Zend&nbsp;Engine&nbsp;v2.3.0,&nbsp;Copyright&nbsp;(c)&nbsp;1998-2012&nbsp;Zend&nbsp;Technologies<br /></td></tr>
</table><br />
<hr />
<h1><a href="/info.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000">PHP Credits</a></h1>
<hr />
<h1>Configuration</h1>
<h2><a name="module_bz2">bz2</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">BZip2 Support </td><td class="v">Enabled </td></tr>
<tr><td class="e">Stream Wrapper support </td><td class="v">compress.bzip2:// </td></tr>
<tr><td class="e">Stream Filter support </td><td class="v">bzip2.decompress, bzip2.compress </td></tr>
<tr><td class="e">BZip2 Version </td><td class="v">1.0.3, 15-Feb-2005 </td></tr>
</table><br />
<h2><a name="module_calendar">calendar</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Calendar support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_cgi-fcgi">cgi-fcgi</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">php-fpm </td><td class="v">active </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">cgi.discard_path</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">cgi.fix_pathinfo</td><td class="v">1</td><td class="v">1</td></tr>
<tr><td class="e">cgi.force_redirect</td><td class="v">1</td><td class="v">1</td></tr>
<tr><td class="e">cgi.nph</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">cgi.redirect_status_env</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">cgi.rfc2616_headers</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">fastcgi.error_header</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">fastcgi.logging</td><td class="v">1</td><td class="v">1</td></tr>
<tr><td class="e">fpm.config</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
</table><br />
<h2><a name="module_Core">Core</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">PHP Version </td><td class="v">5.3.15 </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">allow_call_time_pass_reference</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">allow_url_fopen</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">allow_url_include</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">always_populate_raw_post_data</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">arg_separator.input</td><td class="v">&amp;</td><td class="v">&amp;</td></tr>
<tr><td class="e">arg_separator.output</td><td class="v">&amp;</td><td class="v">&amp;</td></tr>
<tr><td class="e">asp_tags</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">auto_append_file</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">auto_globals_jit</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">auto_prepend_file</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">browscap</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">default_charset</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">default_mimetype</td><td class="v">text/html</td><td class="v">text/html</td></tr>
<tr><td class="e">define_syslog_variables</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">disable_classes</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">disable_functions</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">display_errors</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">display_startup_errors</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">doc_root</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">docref_ext</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">docref_root</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">enable_dl</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">error_append_string</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">error_log</td><td class="v">/var/log/php-fpm/www-error.log</td><td class="v">/var/log/php-fpm/www-error.log</td></tr>
<tr><td class="e">error_prepend_string</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">error_reporting</td><td class="v">22527</td><td class="v">22527</td></tr>
<tr><td class="e">exit_on_timeout</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">expose_php</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">extension_dir</td><td class="v">/usr/lib64/php/modules</td><td class="v">/usr/lib64/php/modules</td></tr>
<tr><td class="e">file_uploads</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">highlight.bg</td><td class="v"><font style="color: #FFFFFF">#FFFFFF</font></td><td class="v"><font style="color: #FFFFFF">#FFFFFF</font></td></tr>
<tr><td class="e">highlight.comment</td><td class="v"><font style="color: #FF8000">#FF8000</font></td><td class="v"><font style="color: #FF8000">#FF8000</font></td></tr>
<tr><td class="e">highlight.default</td><td class="v"><font style="color: #0000BB">#0000BB</font></td><td class="v"><font style="color: #0000BB">#0000BB</font></td></tr>
<tr><td class="e">highlight.html</td><td class="v"><font style="color: #000000">#000000</font></td><td class="v"><font style="color: #000000">#000000</font></td></tr>
<tr><td class="e">highlight.keyword</td><td class="v"><font style="color: #007700">#007700</font></td><td class="v"><font style="color: #007700">#007700</font></td></tr>
<tr><td class="e">highlight.string</td><td class="v"><font style="color: #DD0000">#DD0000</font></td><td class="v"><font style="color: #DD0000">#DD0000</font></td></tr>
<tr><td class="e">html_errors</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">ignore_repeated_errors</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">ignore_repeated_source</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">ignore_user_abort</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">implicit_flush</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">include_path</td><td class="v">.:/usr/share/pear:/usr/share/php</td><td class="v">.:/usr/share/pear:/usr/share/php</td></tr>
<tr><td class="e">log_errors</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">log_errors_max_len</td><td class="v">1024</td><td class="v">1024</td></tr>
<tr><td class="e">magic_quotes_gpc</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">magic_quotes_runtime</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">magic_quotes_sybase</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">mail.add_x_header</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">mail.force_extra_parameters</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">mail.log</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">max_execution_time</td><td class="v">30</td><td class="v">30</td></tr>
<tr><td class="e">max_file_uploads</td><td class="v">20</td><td class="v">20</td></tr>
<tr><td class="e">max_input_nesting_level</td><td class="v">64</td><td class="v">64</td></tr>
<tr><td class="e">max_input_time</td><td class="v">60</td><td class="v">60</td></tr>
<tr><td class="e">max_input_vars</td><td class="v">1000</td><td class="v">1000</td></tr>
<tr><td class="e">memory_limit</td><td class="v">128M</td><td class="v">128M</td></tr>
<tr><td class="e">open_basedir</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">output_buffering</td><td class="v">4096</td><td class="v">4096</td></tr>
<tr><td class="e">output_handler</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">post_max_size</td><td class="v">8M</td><td class="v">8M</td></tr>
<tr><td class="e">precision</td><td class="v">14</td><td class="v">14</td></tr>
<tr><td class="e">realpath_cache_size</td><td class="v">16K</td><td class="v">16K</td></tr>
<tr><td class="e">realpath_cache_ttl</td><td class="v">120</td><td class="v">120</td></tr>
<tr><td class="e">register_argc_argv</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">register_globals</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">register_long_arrays</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">report_memleaks</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">report_zend_debug</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">request_order</td><td class="v">GP</td><td class="v">GP</td></tr>
<tr><td class="e">safe_mode</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">safe_mode_exec_dir</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">safe_mode_gid</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">safe_mode_include_dir</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">sendmail_from</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">sendmail_path</td><td class="v">/usr/sbin/sendmail&nbsp;-t&nbsp;-i</td><td class="v">/usr/sbin/sendmail&nbsp;-t&nbsp;-i</td></tr>
<tr><td class="e">serialize_precision</td><td class="v">100</td><td class="v">100</td></tr>
<tr><td class="e">short_open_tag</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">SMTP</td><td class="v">localhost</td><td class="v">localhost</td></tr>
<tr><td class="e">smtp_port</td><td class="v">25</td><td class="v">25</td></tr>
<tr><td class="e">sql.safe_mode</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">track_errors</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">unserialize_callback_func</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">upload_max_filesize</td><td class="v">2M</td><td class="v">2M</td></tr>
<tr><td class="e">upload_tmp_dir</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">user_dir</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">user_ini.cache_ttl</td><td class="v">300</td><td class="v">300</td></tr>
<tr><td class="e">user_ini.filename</td><td class="v">.user.ini</td><td class="v">.user.ini</td></tr>
<tr><td class="e">variables_order</td><td class="v">GPCS</td><td class="v">GPCS</td></tr>
<tr><td class="e">xmlrpc_error_number</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">xmlrpc_errors</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">y2k_compliance</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">zend.enable_gc</td><td class="v">On</td><td class="v">On</td></tr>
</table><br />
<h2><a name="module_couchbase">couchbase</a></h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>couchbase support</th><th>enabled</th></tr>
<tr><td class="e">version </td><td class="v">1.0.5 </td></tr>
<tr><td class="e">json support </td><td class="v">yes </td></tr>
<tr><td class="e">fastlz support </td><td class="v">no </td></tr>
<tr><td class="e">zlib support </td><td class="v">yes </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">couchbase.compression_factor</td><td class="v">1.3</td><td class="v">1.3</td></tr>
<tr><td class="e">couchbase.compression_threshold</td><td class="v">2000</td><td class="v">2000</td></tr>
<tr><td class="e">couchbase.compressor</td><td class="v">none</td><td class="v">none</td></tr>
<tr><td class="e">couchbase.serializer</td><td class="v">php</td><td class="v">php</td></tr>
</table><br />
<h2><a name="module_ctype">ctype</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">ctype functions </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_curl">curl</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">cURL support </td><td class="v">enabled </td></tr>
<tr><td class="e">cURL Information </td><td class="v">7.15.5 </td></tr>
<tr><td class="e">Age </td><td class="v">2 </td></tr>
<tr><td class="e">Features </td></tr>
<tr><td class="e">AsynchDNS </td><td class="v">No </td></tr>
<tr><td class="e">Debug </td><td class="v">No </td></tr>
<tr><td class="e">GSS-Negotiate </td><td class="v">Yes </td></tr>
<tr><td class="e">IDN </td><td class="v">Yes </td></tr>
<tr><td class="e">IPv6 </td><td class="v">Yes </td></tr>
<tr><td class="e">Largefile </td><td class="v">Yes </td></tr>
<tr><td class="e">NTLM </td><td class="v">Yes </td></tr>
<tr><td class="e">SPNEGO </td><td class="v">No </td></tr>
<tr><td class="e">SSL </td><td class="v">Yes </td></tr>
<tr><td class="e">SSPI </td><td class="v">No </td></tr>
<tr><td class="e">krb4 </td><td class="v">No </td></tr>
<tr><td class="e">libz </td><td class="v">Yes </td></tr>
<tr><td class="e">CharConv </td><td class="v">No </td></tr>
<tr><td class="e">Protocols </td><td class="v">tftp, ftp, telnet, dict, ldap, http, file, https, ftps </td></tr>
<tr><td class="e">Host </td><td class="v">x86_64-redhat-linux-gnu </td></tr>
<tr><td class="e">SSL Version </td><td class="v"> OpenSSL/0.9.8b </td></tr>
<tr><td class="e">ZLib Version </td><td class="v">1.2.3 </td></tr>
</table><br />
<h2><a name="module_date">date</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">date/time support </td><td class="v">enabled </td></tr>
<tr><td class="e">&quot;Olson&quot; Timezone Database Version </td><td class="v">0.system </td></tr>
<tr><td class="e">Timezone Database </td><td class="v">internal </td></tr>
<tr><td class="e">Default timezone </td><td class="v">America/Los_Angeles </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">date.default_latitude</td><td class="v">31.7667</td><td class="v">31.7667</td></tr>
<tr><td class="e">date.default_longitude</td><td class="v">35.2333</td><td class="v">35.2333</td></tr>
<tr><td class="e">date.sunrise_zenith</td><td class="v">90.583333</td><td class="v">90.583333</td></tr>
<tr><td class="e">date.sunset_zenith</td><td class="v">90.583333</td><td class="v">90.583333</td></tr>
<tr><td class="e">date.timezone</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
</table><br />
<h2><a name="module_ereg">ereg</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Regex Library </td><td class="v">Bundled library enabled </td></tr>
</table><br />
<h2><a name="module_exif">exif</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">EXIF Support </td><td class="v">enabled </td></tr>
<tr><td class="e">EXIF Version </td><td class="v">1.4 $Id$ </td></tr>
<tr><td class="e">Supported EXIF Version </td><td class="v">0220 </td></tr>
<tr><td class="e">Supported filetypes </td><td class="v">JPEG,TIFF </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">exif.decode_jis_intel</td><td class="v">JIS</td><td class="v">JIS</td></tr>
<tr><td class="e">exif.decode_jis_motorola</td><td class="v">JIS</td><td class="v">JIS</td></tr>
<tr><td class="e">exif.decode_unicode_intel</td><td class="v">UCS-2LE</td><td class="v">UCS-2LE</td></tr>
<tr><td class="e">exif.decode_unicode_motorola</td><td class="v">UCS-2BE</td><td class="v">UCS-2BE</td></tr>
<tr><td class="e">exif.encode_jis</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">exif.encode_unicode</td><td class="v">ISO-8859-15</td><td class="v">ISO-8859-15</td></tr>
</table><br />
<h2><a name="module_fileinfo">fileinfo</a></h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>fileinfo support</th><th>enabled</th></tr>
<tr><td class="e">version </td><td class="v">1.0.5-dev </td></tr>
</table><br />
<h2><a name="module_filter">filter</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Input Validation and Filtering </td><td class="v">enabled </td></tr>
<tr><td class="e">Revision </td><td class="v">$Id: 2b8c730d7dfaa8485d07cd792f0c82852ffe4113 $ </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">filter.default</td><td class="v">unsafe_raw</td><td class="v">unsafe_raw</td></tr>
<tr><td class="e">filter.default_flags</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
</table><br />
<h2><a name="module_ftp">ftp</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">FTP support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_gettext">gettext</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">GetText Support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_gmp">gmp</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">gmp support </td><td class="v">enabled </td></tr>
<tr><td class="e">GMP version </td><td class="v">4.1.4 </td></tr>
</table><br />
<h2><a name="module_hash">hash</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">hash support </td><td class="v">enabled </td></tr>
<tr><td class="e">Hashing Engines </td><td class="v">md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b salsa10 salsa20 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 </td></tr>
</table><br />
<h2><a name="module_iconv">iconv</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">iconv support </td><td class="v">enabled </td></tr>
<tr><td class="e">iconv implementation </td><td class="v">glibc </td></tr>
<tr><td class="e">iconv library version </td><td class="v">2.5 </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">iconv.input_encoding</td><td class="v">ISO-8859-1</td><td class="v">ISO-8859-1</td></tr>
<tr><td class="e">iconv.internal_encoding</td><td class="v">ISO-8859-1</td><td class="v">ISO-8859-1</td></tr>
<tr><td class="e">iconv.output_encoding</td><td class="v">ISO-8859-1</td><td class="v">ISO-8859-1</td></tr>
</table><br />
<h2><a name="module_json">json</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">json support </td><td class="v">enabled </td></tr>
<tr><td class="e">json version </td><td class="v">1.2.1 </td></tr>
</table><br />
<h2><a name="module_libxml">libxml</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">libXML support </td><td class="v">active </td></tr>
<tr><td class="e">libXML Compiled Version </td><td class="v">2.6.26 </td></tr>
<tr><td class="e">libXML Loaded Version </td><td class="v">20626 </td></tr>
<tr><td class="e">libXML streams </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_mhash">mhash</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">MHASH support </td><td class="v">Enabled </td></tr>
<tr><td class="e">MHASH API Version </td><td class="v">Emulated Support </td></tr>
</table><br />
<h2><a name="module_openssl">openssl</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">OpenSSL support </td><td class="v">enabled </td></tr>
<tr><td class="e">OpenSSL Library Version </td><td class="v">OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 </td></tr>
<tr><td class="e">OpenSSL Header Version </td><td class="v">OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 </td></tr>
</table><br />
<h2><a name="module_pcre">pcre</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">PCRE (Perl Compatible Regular Expressions) Support </td><td class="v">enabled </td></tr>
<tr><td class="e">PCRE Library Version </td><td class="v">8.12 2011-01-15 </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">pcre.backtrack_limit</td><td class="v">1000000</td><td class="v">1000000</td></tr>
<tr><td class="e">pcre.recursion_limit</td><td class="v">100000</td><td class="v">100000</td></tr>
</table><br />
<h2><a name="module_Phar">Phar</a></h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Phar: PHP Archive support</th><th>enabled</th></tr>
<tr><td class="e">Phar EXT version </td><td class="v">2.0.1 </td></tr>
<tr><td class="e">Phar API version </td><td class="v">1.1.1 </td></tr>
<tr><td class="e">SVN revision </td><td class="v">$Id: f7d08da4ab9e515975840c28b830edc9437c3026 $ </td></tr>
<tr><td class="e">Phar-based phar archives </td><td class="v">enabled </td></tr>
<tr><td class="e">Tar-based phar archives </td><td class="v">enabled </td></tr>
<tr><td class="e">ZIP-based phar archives </td><td class="v">enabled </td></tr>
<tr><td class="e">gzip compression </td><td class="v">enabled </td></tr>
<tr><td class="e">bzip2 compression </td><td class="v">enabled </td></tr>
<tr><td class="e">Native OpenSSL support </td><td class="v">enabled </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="v"><td>
Phar based on pear/PHP_Archive, original concept by Davey Shafik.<br />Phar fully realized by Gregory Beaver and Marcus Boerger.<br />Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.</td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">phar.cache_list</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">phar.readonly</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">phar.require_hash</td><td class="v">On</td><td class="v">On</td></tr>
</table><br />
<h2><a name="module_Reflection">Reflection</a></h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Reflection</th><th>enabled</th></tr>
<tr><td class="e">Version </td><td class="v">$Id: e98652ba2326bd9391b730afdaf96c017d9fab48 $ </td></tr>
</table><br />
<h2><a name="module_session">session</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Session Support </td><td class="v">enabled </td></tr>
<tr><td class="e">Registered save handlers </td><td class="v">files user </td></tr>
<tr><td class="e">Registered serializer handlers </td><td class="v">php php_binary </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">session.auto_start</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">session.bug_compat_42</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">session.bug_compat_warn</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">session.cache_expire</td><td class="v">180</td><td class="v">180</td></tr>
<tr><td class="e">session.cache_limiter</td><td class="v">nocache</td><td class="v">nocache</td></tr>
<tr><td class="e">session.cookie_domain</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">session.cookie_httponly</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">session.cookie_lifetime</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">session.cookie_path</td><td class="v">/</td><td class="v">/</td></tr>
<tr><td class="e">session.cookie_secure</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">session.entropy_file</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">session.entropy_length</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">session.gc_divisor</td><td class="v">1000</td><td class="v">1000</td></tr>
<tr><td class="e">session.gc_maxlifetime</td><td class="v">1440</td><td class="v">1440</td></tr>
<tr><td class="e">session.gc_probability</td><td class="v">1</td><td class="v">1</td></tr>
<tr><td class="e">session.hash_bits_per_character</td><td class="v">5</td><td class="v">5</td></tr>
<tr><td class="e">session.hash_function</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">session.name</td><td class="v">PHPSESSID</td><td class="v">PHPSESSID</td></tr>
<tr><td class="e">session.referer_check</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">session.save_handler</td><td class="v">files</td><td class="v">files</td></tr>
<tr><td class="e">session.save_path</td><td class="v">/var/lib/php/session</td><td class="v">/var/lib/php/session</td></tr>
<tr><td class="e">session.serialize_handler</td><td class="v">php</td><td class="v">php</td></tr>
<tr><td class="e">session.use_cookies</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">session.use_only_cookies</td><td class="v">On</td><td class="v">On</td></tr>
<tr><td class="e">session.use_trans_sid</td><td class="v">0</td><td class="v">0</td></tr>
</table><br />
<h2><a name="module_shmop">shmop</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">shmop support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_SimpleXML">SimpleXML</a></h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Simplexml support</th><th>enabled</th></tr>
<tr><td class="e">Revision </td><td class="v">$Id: a379111021e24ef020a2eefd8ca830cb1ab5b280 $ </td></tr>
<tr><td class="e">Schema support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_sockets">sockets</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Sockets Support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_SPL">SPL</a></h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>SPL support</th><th>enabled</th></tr>
<tr><td class="e">Interfaces </td><td class="v">Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject </td></tr>
<tr><td class="e">Classes </td><td class="v">AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException </td></tr>
</table><br />
<h2><a name="module_standard">standard</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Dynamic Library Support </td><td class="v">enabled </td></tr>
<tr><td class="e">Path to sendmail </td><td class="v">/usr/sbin/sendmail -t -i </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">assert.active</td><td class="v">1</td><td class="v">1</td></tr>
<tr><td class="e">assert.bail</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">assert.callback</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">assert.quiet_eval</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">assert.warning</td><td class="v">1</td><td class="v">1</td></tr>
<tr><td class="e">auto_detect_line_endings</td><td class="v">0</td><td class="v">0</td></tr>
<tr><td class="e">default_socket_timeout</td><td class="v">60</td><td class="v">60</td></tr>
<tr><td class="e">from</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">safe_mode_allowed_env_vars</td><td class="v">PHP_</td><td class="v">PHP_</td></tr>
<tr><td class="e">safe_mode_protected_env_vars</td><td class="v">LD_LIBRARY_PATH</td><td class="v">LD_LIBRARY_PATH</td></tr>
<tr><td class="e">url_rewriter.tags</td><td class="v">a=href,area=href,frame=src,input=src,form=fakeentry</td><td class="v">a=href,area=href,frame=src,input=src,form=fakeentry</td></tr>
<tr><td class="e">user_agent</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
</table><br />
<h2><a name="module_tokenizer">tokenizer</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Tokenizer Support </td><td class="v">enabled </td></tr>
</table><br />
<h2><a name="module_xml">xml</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">XML Support </td><td class="v">active </td></tr>
<tr><td class="e">XML Namespace Support </td><td class="v">active </td></tr>
<tr><td class="e">libxml2 Version </td><td class="v">2.6.26 </td></tr>
</table><br />
<h2><a name="module_zip">zip</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">Zip </td><td class="v">enabled </td></tr>
<tr><td class="e">Extension Version </td><td class="v">$Id$ </td></tr>
<tr><td class="e">Zip version </td><td class="v">1.11.0 </td></tr>
<tr><td class="e">Libzip version </td><td class="v">0.10.1 </td></tr>
</table><br />
<h2><a name="module_zlib">zlib</a></h2>
<table border="0" cellpadding="3" width="600">
<tr><td class="e">ZLib Support </td><td class="v">enabled </td></tr>
<tr><td class="e">Stream Wrapper support </td><td class="v">compress.zlib:// </td></tr>
<tr><td class="e">Stream Filter support </td><td class="v">zlib.inflate, zlib.deflate </td></tr>
<tr><td class="e">Compiled Version </td><td class="v">1.2.3 </td></tr>
<tr><td class="e">Linked Version </td><td class="v">1.2.3 </td></tr>
</table><br />
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Directive</th><th>Local Value</th><th>Master Value</th></tr>
<tr><td class="e">zlib.output_compression</td><td class="v">Off</td><td class="v">Off</td></tr>
<tr><td class="e">zlib.output_compression_level</td><td class="v">-1</td><td class="v">-1</td></tr>
<tr><td class="e">zlib.output_handler</td><td class="v"><i>no value</i></td><td class="v"><i>no value</i></td></tr>
</table><br />
<h2>Additional Modules</h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Module Name</th></tr>
</table><br />
<h2>Environment</h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Variable</th><th>Value</th></tr>
<tr><td class="e">USER </td><td class="v">apache </td></tr>
<tr><td class="e">HOME </td><td class="v">/var/www </td></tr>
</table><br />
<h2>PHP Variables</h2>
<table border="0" cellpadding="3" width="600">
<tr class="h"><th>Variable</th><th>Value</th></tr>
<tr><td class="e">_SERVER["USER"]</td><td class="v">apache</td></tr>
<tr><td class="e">_SERVER["HOME"]</td><td class="v">/var/www</td></tr>
<tr><td class="e">_SERVER["FCGI_ROLE"]</td><td class="v">RESPONDER</td></tr>
<tr><td class="e">_SERVER["QUERY_STRING"]</td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">_SERVER["REQUEST_METHOD"]</td><td class="v">GET</td></tr>
<tr><td class="e">_SERVER["CONTENT_TYPE"]</td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">_SERVER["CONTENT_LENGTH"]</td><td class="v"><i>no value</i></td></tr>
<tr><td class="e">_SERVER["SCRIPT_NAME"]</td><td class="v">/info.php</td></tr>
<tr><td class="e">_SERVER["REQUEST_URI"]</td><td class="v">/info.php</td></tr>
<tr><td class="e">_SERVER["DOCUMENT_URI"]</td><td class="v">/info.php</td></tr>
<tr><td class="e">_SERVER["DOCUMENT_ROOT"]</td><td class="v">/usr/share/nginx/html</td></tr>
<tr><td class="e">_SERVER["SERVER_PROTOCOL"]</td><td class="v">HTTP/1.1</td></tr>
<tr><td class="e">_SERVER["GATEWAY_INTERFACE"]</td><td class="v">CGI/1.1</td></tr>
<tr><td class="e">_SERVER["SERVER_SOFTWARE"]</td><td class="v">nginx/1.0.0</td></tr>
<tr><td class="e">_SERVER["REMOTE_ADDR"]</td><td class="v">10.32.11.142</td></tr>
<tr><td class="e">_SERVER["REMOTE_PORT"]</td><td class="v">52482</td></tr>
<tr><td class="e">_SERVER["SERVER_ADDR"]</td><td class="v">10.4.2.14</td></tr>
<tr><td class="e">_SERVER["SERVER_PORT"]</td><td class="v">80</td></tr>
<tr><td class="e">_SERVER["SERVER_NAME"]</td><td class="v">_</td></tr>
<tr><td class="e">_SERVER["REDIRECT_STATUS"]</td><td class="v">200</td></tr>
<tr><td class="e">_SERVER["SCRIPT_FILENAME"]</td><td class="v">/usr/share/nginx/html/info.php</td></tr>
<tr><td class="e">_SERVER["HTTP_HOST"]</td><td class="v">10.4.2.14</td></tr>
<tr><td class="e">_SERVER["HTTP_CONNECTION"]</td><td class="v">keep-alive</td></tr>
<tr><td class="e">_SERVER["HTTP_USER_AGENT"]</td><td class="v">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1</td></tr>
<tr><td class="e">_SERVER["HTTP_ACCEPT"]</td><td class="v">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</td></tr>
<tr><td class="e">_SERVER["HTTP_ACCEPT_ENCODING"]</td><td class="v">gzip,deflate,sdch</td></tr>
<tr><td class="e">_SERVER["HTTP_ACCEPT_LANGUAGE"]</td><td class="v">en-US,en;q=0.8</td></tr>
<tr><td class="e">_SERVER["HTTP_ACCEPT_CHARSET"]</td><td class="v">ISO-8859-1,utf-8;q=0.7,*;q=0.3</td></tr>
<tr><td class="e">_SERVER["PHP_SELF"]</td><td class="v">/info.php</td></tr>
<tr><td class="e">_SERVER["REQUEST_TIME"]</td><td class="v">1346950138</td></tr>
</table><br />
<h2>PHP License</h2>
<table border="0" cellpadding="3" width="600">
<tr class="v"><td>
<p>
This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
</p>
<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
</p>
<p>If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
</p>
</td></tr>
</table><br />
</div></body></html>
Comment by Matt Ingenthron [ 06/Sep/12 ]
This seems to be affecting 1.0.5 as well.
Comment by Mark Nunberg [ 06/Sep/12 ]
I have some guesses as to what might be wrong.. but I'll do some reasearch now..
Comment by Mark Nunberg [ 06/Sep/12 ]
Problem fixed. I'll be putting a patch to gerrit shortly.
Comment by Mark Nunberg [ 06/Sep/12 ]
http://review.couchbase.org/20591
Comment by Mark Nunberg [ 10/Sep/12 ]
still need to forward-port this into the master branch




[PCBC-35] Add automated cluster tests Created: 03/Feb/12  Updated: 26/Aug/13  Resolved: 12/Nov/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: 1.1.0
Security Level: Public

Type: Improvement Priority: Major
Reporter: Jan Lehnardt (Inactive) Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Comments   
Comment by Matt Ingenthron [ 07/Nov/12 ]
I believe this is closeable with the new testing framework you've built, correct? If you agree, please close. Let's look more at the roadmap on this one sometime soon.
Comment by Mark Nunberg [ 12/Nov/12 ]
Yes. We might want to make automated tests (i.e. 'make test'), but there's not much which is php-specific.. I'm imagining trond's build server is sufficient as far as these things go..




[PCBC-71] implement addserver() Created: 08/Jun/12  Updated: 26/Aug/13  Resolved: 06/Sep/12

Status: Closed
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.0.4
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Perry Krug Assignee: Jan Lehnardt (Inactive)
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Just opening a bug since I didn't see one already...there's currently no "supported" way to add multiple servers to the Couchbase PHP client instance

 Comments   
Comment by Michael Nitschinger [ 29/Aug/12 ]
This should be supported through libcouchbase.

You can pass in more nodes as "node1:port;node2:port;node3:port".

If you like to work with arrays:

$servers = array('node1:port', 'node2:port');
$cb = new Couchbase(join(';', $servers));

Comment by Mark Nunberg [ 06/Sep/12 ]
This is now possible through the ';'-delimited string, or the array constructor option. Once the client is connected, it learns about other servers from the REST JSON stream..




[PCBC-81] User reports expiration is not working properly Created: 05/Jul/12  Updated: 26/Aug/13  Resolved: 18/Sep/12

Status: Closed
Project: Couchbase PHP client library
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Major
Reporter: Mike Wiederhold Assignee: Michael Jackson
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/forums/thread/recent-issues-couchbase-eviction-php-sessions-and-expired-keys

 Comments   
Comment by Mark Nunberg [ 18/Sep/12 ]
The user states that the pecl-memcached extension is being used. Expiration seems to work with php-ext-couchbase, so I'm closing this.




[PCBC-134] Provide more information on connection failure Created: 08/Oct/12  Updated: 26/Aug/13  Resolved: 26/Oct/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.0-dp4
Fix Version/s: 1.1.0
Security Level: Public

Type: Bug Priority: Major
Reporter: Dan Andersen Assignee: Michael Jackson
Resolution: Fixed Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates PCBC-58 Couchbase.so - constructing Couchbase... Resolved

 Description   
When you connect via the new Couchbase(...) is not a direct way to check for whether the connection failed.

It is not possible to check getResultCode()/getResultMessage() since this provides a unintilized couchbase

 Comments   
Comment by Mark Nunberg [ 08/Oct/12 ]
For this we'd probably need to change the ext code to return a valid couchbase object so that getResultCode can be called on it (to check for connection failures).

For the non-oo variant (couchbase_connect) behavior should remain the same (?)

Additionally, all the code which now checks for the couchbase object to simply exist should be changed to check that the couchbase object is indeed connected (I believe lcb has a function for that, but if not we can set our own little flag in our php_couchbase_ctx structure).

One workaround is to call set_error_handler and make it throw an ErrorException right before instantiation. Then the connection can be done in a try/catch block, with any message being found in $ex->getMessage().

I believe there may be ther workarounds as well
Comment by Michael Jackson [ 09/Oct/12 ]
patch set in progress: http://review.couchbase.org/#/c/21433/
Comment by Michael Jackson [ 09/Oct/12 ]
As a side note, I have a 1.0.x backport of the changes above ready to roll once the master branch changes are approved/merged.
Comment by Michael Jackson [ 10/Oct/12 ]
master branch changeset is merged in. 1.0.x changeset is here: http://review.couchbase.org/#/c/21487/
Comment by Michael Jackson [ 19/Oct/12 ]
(I believe all this needs for resolution is the 1.0.x changeset mentioned above to be merged into 1.0.x branch.)
Comment by Michael Jackson [ 26/Oct/12 ]
1.0.x merged in just now, 1.1 has been in for a bit. Should be present in next released versions.




[PCBC-111] Zlib compression broken Created: 06/Sep/12  Updated: 26/Aug/13  Resolved: 07/Nov/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.0-dp1, 1.1.0-dp2
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Blocker
Reporter: Mark Nunberg Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Zlib compression is broken. This means large payloads are never compressed on the network.

class Compression extends CouchbaseTestCommon {
    function testCompression() {
        
        if (!extension_loaded('zlib')) {
            $this->markTestSkipped("Need Zlib extension");
        }
        
        $h = make_handle();
        $hnc = make_handle();
        
        $curcomp = couchbase_get_option($h, COUCHBASE_OPT_COMPRESSION);
        $this->assertEquals(COUCHBASE::COMPRESSION_NONE, $curcomp);
        
        couchbase_set_option($h, COUCHBASE_OPT_COMPRESSION,
                             COUCHBASE::COMPRESSION_ZLIB);
        $curcomp = couchbase_get_option($h, COUCHBASE_OPT_COMPRESSION);
        $this->assertEquals(COUCHBASE_COMPRESSION_ZLIB, $curcomp);
        
        couchbase_set_option($hnc, COUCHBASE_OPT_COMPRESSION,
                             COUCHBASE::COMPRESSION_NONE);
        
        $inikey = "couchbase.compression_threshold";
        $this->assertGreaterThan(0, ini_get($inikey));
        $this->assertTrue((bool)ini_alter($inikey,"10"));
        $this->assertEquals(10, ini_get($inikey));
        
        # Set a compressed value
        $v = str_repeat("long_value", 500);
        $ol = strlen($v);
        //$key = $this->mk_key();
        $key = "compressed_data";
        
        $rv = couchbase_set($h, $key, $v);
        $this->assertNotEmpty($rv);
        
        
        $comp = couchbase_get_option($h, COUCHBASE_OPT_COMPRESSION);
        print $comp . "\n";
        
        # Hack, append resets the flags, clearing the compression state.
        $rv = couchbase_append($hnc, $key, '_');
        $this->assertNotEmpty($rv);
        
        $ret = couchbase_get($hnc, $key);
        $this->assertNotNull($ret);
        $this->assertLessThan($ol, strlen($ret));
    }
}

 Comments   
Comment by Mark Nunberg [ 06/Sep/12 ]
Apparently this results in (silent) memory corruption as well.. leading to unpredictable results. A similar test (pasted below) gives me this:


PHP Warning: PHP Startup: Unable to load dynamic library '/home/mnunberg/src/php-ext-couchbase-1.0.x/modules/pdo.so' - /home/mnunberg/src/php-ext-couchbase-1.0.x/modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHPUnit 3.6.12 by Sebastian Bergmann.

PHP Fatal error: Out of memory (allocated 3145728) (tried to allocate 4992063506150606153 bytes) in /home/mnunberg/src/php-couchbase-tests/unit/Compression.php on line 54
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:46
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:130
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:192
PHP 5. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/TextUI/TestRunner.php:325
PHP 6. PHPUnit_Framework_TestSuite->runTest() /usr/share/php/PHPUnit/Framework/TestSuite.php:745
PHP 7. PHPUnit_Framework_TestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:772
PHP 8. PHPUnit_Framework_TestResult->run() /usr/share/php/PHPUnit/Framework/TestCase.php:751
PHP 9. PHPUnit_Framework_TestCase->runBare() /usr/share/php/PHPUnit/Framework/TestResult.php:649
PHP 10. PHPUnit_Framework_TestCase->runTest() /usr/share/php/PHPUnit/Framework/TestCase.php:804
PHP 11. ReflectionMethod->invokeArgs() /usr/share/php/PHPUnit/Framework/TestCase.php:942
PHP 12. Compression->testCompression() /usr/share/php/PHPUnit/Framework/TestCase.php:942
PHP 13. couchbase_get() /home/mnunberg/src/php-couchbase-tests/unit/Compression.php:54
couchbase_50493659660c9
Comment by Mark Nunberg [ 06/Sep/12 ]
The problem reaches far deeper than simple zlib.

The compression headers themselves (the client uses a non-standard header, rather than gzip) is specified as a 'size_t', therefore this will break for any communication between cross-architecture clients.. i.e. i386 clients will not be able to properly encode lengths for x86_64 clients.

Additionally, 'simple' zlib compression won't work either because of said header.
Comment by Mark Nunberg [ 11/Sep/12 ]
http://review.couchbase.org/#/c/20604/




[PCBC-105] Update the docs to show all PHP methods options Created: 27/Aug/12  Updated: 26/Aug/13  Resolved: 30/Jan/13

Status: Resolved
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.1.0-dp2
Fix Version/s: 1.1.3
Security Level: Public

Type: Bug Priority: Critical
Reporter: Sergey Avseyev Assignee: MC Brown (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
http://www.couchbase.com/docs/couchbase-sdk-php-1.0/api-reference-update.html#table-couchbase-sdk_php_increment


Here is the output of 'grep proto couchbase.c' on both branches: https://gist.github.com/26f376a604ad62fe2d89


 Comments   
Comment by Matt Ingenthron [ 12/Nov/12 ]
MC: Can you help Karen get what she needs to be able to get this in place this week? Thanks!
Comment by MC Brown (Inactive) [ 30/Jan/13 ]
All of the PHP options have now been added to the documentation, and their information and detail expanded to cover supplied values, returned values, errors and exceptions.




[PCBC-117] Negative expiry values should throw an error Created: 24/Sep/12  Updated: 26/Aug/13  Resolved: 26/Sep/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.1.0-dp4
Fix Version/s: 1.1.0-dp5
Security Level: Public

Type: Bug Priority: Critical
Reporter: Mark Nunberg Assignee: Michael Jackson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Negative expiry values should throw an error. It is impossible to determine if the user means to disable expiry, or has accidentally make the expiry value too low (which in C-land will cause a wrap-around).

Currently it just wraps around to a time_t (or doesn't throw an error at least).

 Comments   
Comment by Michael Jackson [ 25/Sep/12 ]
1.0.x branch fix and tests for same: http://review.couchbase.org/#/c/21079/
Comment by Michael Jackson [ 26/Sep/12 ]
1.1.x/ master fix for same: http://review.couchbase.org/#/c/21090/

(These may need refactored tests, those will come in a separate issue.)




[PCBC-97] tests 006.phpt and 007.phpt fail on multiple nodes owing to how they compare multi results Created: 10/Aug/12  Updated: 26/Aug/13  Resolved: 05/Sep/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Minor
Reporter: Matt Ingenthron Assignee: Mark Nunberg
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
Currently, in tests 006 and 007, we rely on serialize of multiget responses to make a comparison. Since the results can be in a different order, this will frequently make tests fail.

For example, here's some dump output of v and keys in 006:

v is
string(414) "a:6:{s:23:"couchbase_5025a95b7b7dd";s:29:"couchbase_value_5025a95b7b7e5";s:23:"couchbase_5025a95b7b7bc";s:29:"couchbase_value_5025a95b7b7c8";s:23:"couchbase_5025a95b7b7f2";s:29:"couchbase_value_5025a95b7b7f9";s:23:"couchbase_5025a95b7b801";s:29:"couchbase_value_5025a95b7b807";s:23:"couchbase_5025a95b7b81c";s:29:"couchbase_value_5025a95b7b823";s:23:"couchbase_5025a95b7b80f";s:29:"couchbase_value_5025a95b7b815";}"
keys is
string(414) "a:6:{s:23:"couchbase_5025a95b7b7bc";s:29:"couchbase_value_5025a95b7b7c8";s:23:"couchbase_5025a95b7b7dd";s:29:"couchbase_value_5025a95b7b7e5";s:23:"couchbase_5025a95b7b7f2";s:29:"couchbase_value_5025a95b7b7f9";s:23:"couchbase_5025a95b7b801";s:29:"couchbase_value_5025a95b7b807";s:23:"couchbase_5025a95b7b80f";s:29:"couchbase_value_5025a95b7b815";s:23:"couchbase_5025a95b7b81c";s:29:"couchbase_value_5025a95b7b823";}"


Note that the same stuff is there, it's just not in the same order. In a single node cluster, it comes back in the same order but the results race for position in a multi-node cluster.

 Comments   
Comment by Michael Nitschinger [ 25/Aug/12 ]
See http://review.couchbase.com/#/c/20162/
Comment by Mark Nunberg [ 05/Sep/12 ]
Moving to the phpunit based test suite, where all this stuff is fixed.




[PCBC-135] Wrong parameter description for delete() Created: 08/Oct/12  Updated: 26/Aug/13  Resolved: 27/Nov/12

Status: Closed
Project: Couchbase PHP client library
Component/s: docs
Affects Version/s: 1.0, 1.1.0-dp4
Fix Version/s: 1.1.0
Security Level: Public

Type: Bug Priority: Minor
Reporter: Dan Andersen Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The docs API for the delete method says: ( http://www.couchbase.com/docs/couchbase-sdk-php-1.1/api-reference-update.html#table-couchbase-sdk_php_delete )

$object->delete($key [, $expiry ])

But the expire should actually be cas, as in the source https://github.com/couchbase/php-ext-couchbase/blob/master/couchbase.c#L401


 Comments   
Comment by Matt Ingenthron [ 08/Oct/12 ]
Please update this in both the 1.0 and 1.1 SDK docs.
Comment by kzeller [ 27/Nov/12 ]
Should be fixed with this change, I think:

      <argument inherit="cas" optional="yes"/>
Comment by kzeller [ 27/Nov/12 ]
should be the fix:

      <argument inherit="cas" optional="yes"/>




[PCBC-113] getMulti() returns "broken" array Created: 10/Sep/12  Updated: 26/Aug/13  Resolved: 10/Sep/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: None
Fix Version/s: None
Security Level: Public

Type: Bug Priority: Blocker
Reporter: Benjamin Young Assignee: Mark Nunberg
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
The array's returned by getMulti() are not correctly keyed or are in some other way broken. When one tries to reference the key via it's name, an "undefined index" error is returned. array_key_exists() also returns false.

This paste has some sample code:
https://friendpaste.com/MJS2O8G5b7kRqslp2pMBo

Both the top and bottom cases should end in bool(true).


avsej mentioned in IRC that these two portions of code should be compared:
https://github.com/couchbase/php-ext-couchbase/blob/master/couchbase.c#L940
https://github.com/php-memcached-dev/php-memcached/blob/master/php_memcached.c#L828

Thanks for digging into this issue.

 Comments   
Comment by Mark Nunberg [ 10/Sep/12 ]
PCBC-66 fixed only for getMulti but not setMulti which suffers from the same bug.




[PCBC-115] getStats() returns malformed array Created: 14/Sep/12  Updated: 26/Aug/13  Resolved: 17/Sep/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.0.4
Fix Version/s: 1.1.0-dp4
Security Level: Public

Type: Bug Priority: Major
Reporter: Michael Jackson Assignee: Michael Jackson
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment: debian stable x86 32bit


 Description   
The associative array returned by getStats (OO version) / couchbase_get_stats ("ordinary" function version) has malformed array keys similar to the issue observed in PCBC-66. For example, using array_key_exists on "ep_version" returns false, and attempting to reference that array key directly raises and error, even though the key name is visible in the output of a var_dump or similar.

 Comments   
Comment by Michael Jackson [ 14/Sep/12 ]
Fix in http://review.couchbase.org/20864
Comment by Michael Jackson [ 14/Sep/12 ]
(This may need to be ported to master for 1.1 release as well, will examine that shortly.)
Comment by Michael Jackson [ 17/Sep/12 ]
1.1.x fix in http://review.couchbase.org/#/c/20875/
Comment by Michael Jackson [ 17/Sep/12 ]
Fixes merged to 1.0.x and 1.1.x branches.




[PCBC-139] PHP client needs fastlz compression to be compatible with legacy memcached clients Created: 01/Nov/12  Updated: 26/Aug/13  Resolved: 16/Nov/12

Status: Resolved
Project: Couchbase PHP client library
Component/s: library
Affects Version/s: 1.0.4
Fix Version/s: 1.1.0
Security Level: Public

Type: Bug Priority: Blocker
Reporter: Tim Smith (Inactive) Assignee: Trond Norbye
Resolution: Fixed Votes: 0
Labels: customer
Remaining Estimate: 16h
Time Spent: Not Specified
Original Estimate: 16h
Environment: With both php-ext-couchbase-1.0.5-centos55-x86_64.tar.gz and php-ext-couchbase-1.0.6b23_centos-5.5-x64.tar.gz. I will attach php -i output as a separate comment. Using php-pecl-memcached extension 1.0.0. libmemcached 1.0.4.

Attachments: GZip Archive couchbase.so.gz    
Issue Links:
Dependency

 Description   
The existing memcached clients for PHP (pecl-memcached and memcache) both default to using fastlz compression for values >= 2000 bytes.

The couchbase client library doesn't have fastlz compression included. It doesn't provide a useful error message when it runs into this problem. Instead, it misinterprets the stored value, tries to allocate a huge block of memory and fails. The error it gives (look, e.g., in the PHP-FPM web-access.log) is:

[01-Nov-2012 20:45:49 UTC] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8460104323416721361 bytes) in /usr/share/nginx/html/cb.php on line 32

To reproduce, just set a value >= 2000 bytes with pecl-memcached client, and try to read it with Couchbase client. Here's a sample:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Couchbase Server PHP Test</title>
</head>
<body>

<p>
<?php

$host = "10.4.2.15";
$user = "Administrator";
$password = "password";
$bucketName = "default";
$persistConnection = false;
$cb = new Couchbase($host . ":8091",
        $user, $password, $bucketName, $persistConnection);

$mc = new Memcached('Pool-1');
if (count($mc->getServerList()) == 0) {
    // No servers, this pool needs to be configured
    $mc->addServer($host, 11211);
    //$mc->addServer("other host", 11211);
}

// Change this to 1999 and it will work
$valLength = 2000;
date_default_timezone_set('UTC');
$val = date(DateTime::RFC2822) . ' ';
$val .= str_repeat('X', $valLength - strlen($val));

$mc->set("a", $val);
echo("The value for 'a' is: ");
var_dump($cb->get("a"));

?>
</p>
</body>
</html>


The correct behavior is for the Couchbase client to ship, out of the box, compatible with existing Memcached client implementations. It should include fastlz support directly, or else clearly document how to add such support without requiring any unusual compilations or other hoops. The fastlz code is very small and portable, and hasn't changed since 2007, so it should present a minimal maintenance issue.

In addition, the PHP client documentation should clearly indicate what changes are needed in order for the client to be compatible with the other Couchbase clients (Java, .NET, etc.). Again, without requiring recompilation or extra hoops to jump through.



 Comments   
Comment by Tim Smith (Inactive) [ 01/Nov/12 ]
phpinfo()
PHP Version => 5.3.15

System => Linux localhost.localdomain 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:43 EDT 2012 x86_64
Build Date => Jul 20 2012 13:07:19
Configure Command => './configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--with-t1lib=/usr' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--with-mhash' '--enable-force-cgi-redirect' '--libdir=/usr/lib64/php' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--enable-mysqlnd=shared' '--with-mysql=shared,mysqlnd' '--with-mysqli=shared,mysqlnd' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-oci8=shared,instantclient,/usr/lib64/oracle/11.2/client64/lib,11.2' '--with-pdo-oci=shared,instantclient,/usr,11.2' '--with-interbase=shared,/usr/lib64/firebird' '--with-pdo-firebird=shared,/usr/lib64/firebird' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--with-pdo-dblib=shared,/usr' '--without-sqlite3' '--with-sqlite=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--without-readline' '--with-libedit' '--with-pspell=shared' '--enable-phar=shared' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--with-mssql=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-enchant=shared,/usr' '--with-recode=shared,/usr'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Scan this dir for additional .ini files => /etc/php.d
Additional .ini files parsed => /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/igbinary.ini,
/etc/php.d/json.ini,
/etc/php.d/memcached.ini,
/etc/php.d/phar.ini,
/etc/php.d/zip.ini,
/etc/php.d/zzz-couchbase.ini

PHP API => 20090626
PHP Extension => 20090626
Zend Extension => 220090626
Zend Extension Build => API220090626,NTS
PHP Extension Build => API20090626,NTS
Debug Build => no
Thread Safety => disabled
Zend Memory Manager => enabled
Zend Multibyte Support => disabled
IPv6 Support => enabled
Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk


This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies


 _______________________________________________________________________


Configuration

bz2

BZip2 Support => Enabled
Stream Wrapper support => compress.bzip2://
Stream Filter support => bzip2.decompress, bzip2.compress
BZip2 Version => 1.0.3, 15-Feb-2005

calendar

Calendar support => enabled

Core

PHP Version => 5.3.15

Directive => Local Value => Master Value
allow_call_time_pass_reference => Off => Off
allow_url_fopen => On => On
allow_url_include => Off => Off
always_populate_raw_post_data => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
asp_tags => Off => Off
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => no value => no value
default_mimetype => text/html => text/html
define_syslog_variables => Off => Off
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => Off => Off
display_startup_errors => Off => Off
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => Off => Off
error_append_string => no value => no value
error_log => no value => no value
error_prepend_string => no value => no value
error_reporting => 22527 => 22527
exit_on_timeout => Off => Off
expose_php => On => On
extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
file_uploads => On => On
highlight.bg => <font style="color: #FFFFFF">#FFFFFF</font> => <font style="color: #FFFFFF">#FFFFFF</font>
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On
include_path => .:/usr/share/pear:/usr/share/php => .:/usr/share/pear:/usr/share/php
log_errors => On => On
log_errors_max_len => 1024 => 1024
magic_quotes_gpc => Off => Off
magic_quotes_runtime => Off => Off
magic_quotes_sybase => Off => Off
mail.add_x_header => On => On
mail.force_extra_parameters => no value => no value
mail.log => no value => no value
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
max_input_vars => 1000 => 1000
memory_limit => 128M => 128M
open_basedir => no value => no value
output_buffering => 0 => 0
output_handler => no value => no value
post_max_size => 8M => 8M
precision => 14 => 14
realpath_cache_size => 16K => 16K
realpath_cache_ttl => 120 => 120
register_argc_argv => On => On
register_globals => Off => Off
register_long_arrays => Off => Off
report_memleaks => On => On
report_zend_debug => Off => Off
request_order => GP => GP
safe_mode => Off => Off
safe_mode_exec_dir => no value => no value
safe_mode_gid => Off => Off
safe_mode_include_dir => no value => no value
sendmail_from => no value => no value
sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
serialize_precision => 100 => 100
short_open_tag => Off => Off
SMTP => localhost => localhost
smtp_port => 25 => 25
sql.safe_mode => Off => Off
track_errors => Off => Off
unserialize_callback_func => no value => no value
upload_max_filesize => 2M => 2M
upload_tmp_dir => no value => no value
user_dir => no value => no value
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
variables_order => GPCS => GPCS
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
y2k_compliance => On => On
zend.enable_gc => On => On

couchbase

couchbase support => enabled
version => 1.0.5
json support => yes
fastlz support => no
zlib support => yes

Directive => Local Value => Master Value
couchbase.compression_factor => 1.3 => 1.3
couchbase.compression_threshold => 2000 => 2000
couchbase.compressor => none => none
couchbase.serializer => php => php

ctype

ctype functions => enabled

curl

cURL support => enabled
cURL Information => 7.15.5
Age => 2
Features
AsynchDNS => No
Debug => No
GSS-Negotiate => Yes
IDN => Yes
IPv6 => Yes
Largefile => Yes
NTLM => Yes
SPNEGO => No
SSL => Yes
SSPI => No
krb4 => No
libz => Yes
CharConv => No
Protocols => tftp, ftp, telnet, dict, ldap, http, file, https, ftps
Host => x86_64-redhat-linux-gnu
SSL Version => OpenSSL/0.9.8b
ZLib Version => 1.2.3

date

date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Los_Angeles' for 'PDT/-7.0/DST' instead in Unknown on line 0
Default timezone => America/Los_Angeles

Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.583333 => 90.583333
date.sunset_zenith => 90.583333 => 90.583333
date.timezone => no value => no value

ereg

Regex Library => Bundled library enabled

exif

EXIF Support => enabled
EXIF Version => 1.4 $Id$
Supported EXIF Version => 0220
Supported filetypes => JPEG,TIFF

Directive => Local Value => Master Value
exif.decode_jis_intel => JIS => JIS
exif.decode_jis_motorola => JIS => JIS
exif.decode_unicode_intel => UCS-2LE => UCS-2LE
exif.decode_unicode_motorola => UCS-2BE => UCS-2BE
exif.encode_jis => no value => no value
exif.encode_unicode => ISO-8859-15 => ISO-8859-15

fileinfo

fileinfo support => enabled
version => 1.0.5-dev

filter

Input Validation and Filtering => enabled
Revision => $Id: 2b8c730d7dfaa8485d07cd792f0c82852ffe4113 $

Directive => Local Value => Master Value
filter.default => unsafe_raw => unsafe_raw
filter.default_flags => no value => no value

ftp

FTP support => enabled

gettext

GetText Support => enabled

gmp

gmp support => enabled
GMP version => 4.1.4

hash

hash support => enabled
Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b salsa10 salsa20 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv

iconv support => enabled
iconv implementation => glibc
iconv library version => 2.5

Directive => Local Value => Master Value
iconv.input_encoding => ISO-8859-1 => ISO-8859-1
iconv.internal_encoding => ISO-8859-1 => ISO-8859-1
iconv.output_encoding => ISO-8859-1 => ISO-8859-1

igbinary

igbinary support => enabled
igbinary version => 1.1.1
igbinary APC serializer ABI => 0

Directive => Local Value => Master Value
igbinary.compact_strings => On => On

json

json support => enabled
json version => 1.2.1

libxml

libXML support => active
libXML Compiled Version => 2.6.26
libXML Loaded Version => 20626
libXML streams => enabled

memcached

memcached support => enabled
Version => 2.1.0
libmemcached version => 1.0.4
Session support => yes
igbinary support => yes
json support => yes

Directive => Local Value => Master Value
memcached.compression_factor => 1.3 => 1.3
memcached.compression_threshold => 2000 => 2000
memcached.compression_type => fastlz => fastlz
memcached.serializer => igbinary => igbinary
memcached.sess_binary => 0 => 0
memcached.sess_lock_wait => 150000 => 150000
memcached.sess_locking => 1 => 1
memcached.sess_prefix => memc.sess.key. => memc.sess.key.

mhash

MHASH support => Enabled
MHASH API Version => Emulated Support

openssl

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
OpenSSL Header Version => OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

pcntl

pcntl support => enabled

pcre

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 8.12 2011-01-15

Directive => Local Value => Master Value
pcre.backtrack_limit => 1000000 => 1000000
pcre.recursion_limit => 100000 => 100000

Phar

Phar: PHP Archive support => enabled
Phar EXT version => 2.0.1
Phar API version => 1.1.1
SVN revision => $Id: f7d08da4ab9e515975840c28b830edc9437c3026 $
Phar-based phar archives => enabled
Tar-based phar archives => enabled
ZIP-based phar archives => enabled
gzip compression => enabled
bzip2 compression => enabled
Native OpenSSL support => enabled


Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
Directive => Local Value => Master Value
phar.cache_list => no value => no value
phar.readonly => On => On
phar.require_hash => On => On

Reflection

Reflection => enabled
Version => $Id: e98652ba2326bd9391b730afdaf96c017d9fab48 $

session

Session Support => enabled
Registered save handlers => files user memcached
Registered serializer handlers => php php_binary igbinary

Directive => Local Value => Master Value
session.auto_start => Off => Off
session.bug_compat_42 => Off => Off
session.bug_compat_warn => Off => Off
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_httponly => Off => Off
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_secure => Off => Off
session.entropy_file => no value => no value
session.entropy_length => 0 => 0
session.gc_divisor => 1000 => 1000
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 1 => 1
session.hash_bits_per_character => 5 => 5
session.hash_function => 0 => 0
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no value
session.save_handler => files => files
session.save_path => /var/lib/php/session => /var/lib/php/session
session.serialize_handler => php => php
session.use_cookies => On => On
session.use_only_cookies => On => On
session.use_trans_sid => 0 => 0

shmop

shmop support => enabled

SimpleXML

Simplexml support => enabled
Revision => $Id: a379111021e24ef020a2eefd8ca830cb1ab5b280 $
Schema support => enabled

sockets

Sockets Support => enabled

SPL

SPL support => enabled
Interfaces => Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

standard

Dynamic Library Support => enabled
Path to sendmail => /usr/sbin/sendmail -t -i

Directive => Local Value => Master Value
assert.active => 1 => 1
assert.bail => 0 => 0
assert.callback => no value => no value
assert.quiet_eval => 0 => 0
assert.warning => 1 => 1
auto_detect_line_endings => 0 => 0
default_socket_timeout => 60 => 60
from => no value => no value
safe_mode_allowed_env_vars => PHP_ => PHP_
safe_mode_protected_env_vars => LD_LIBRARY_PATH => LD_LIBRARY_PATH
url_rewriter.tags => a=href,area=href,frame=src,input=src,form=fakeentry => a=href,area=href,frame=src,input=src,form=fakeentry
user_agent => no value => no value

tokenizer

Tokenizer Support => enabled

xml

XML Support => active
XML Namespace Support => active
libxml2 Version => 2.6.26

zip

Zip => enabled
Extension Version => $Id$
Zip version => 1.11.0
Libzip version => 0.10.1

zlib

ZLib Support => enabled
Stream Wrapper support => compress.zlib://
Stream Filter support => zlib.inflate, zlib.deflate
Compiled Version => 1.2.3
Linked Version => 1.2.3

Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value

Additional Modules

Module Name
readline

Environment

Variable => Value
HOSTNAME => localhost.localdomain
TERM => xterm-256color
SHELL => /bin/bash
HISTSIZE => 1000
SSH_CLIENT => 10.32.16.37 62308 22
SSH_TTY => /dev/pts/1
USER => root
LS_COLORS =>
SSH_AUTH_SOCK => /tmp/ssh-RpQDiY3683/agent.3683
MAIL => /var/spool/mail/root
PATH => /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD => /usr/share/nginx/html
LANG => en_US.UTF-8
SSH_ASKPASS => /usr/libexec/openssh/gnome-ssh-askpass
SHLVL => 1
HOME => /root
LOGNAME => root
SSH_CONNECTION => 10.32.16.37 62308 10.4.2.14 22
LESSOPEN => |/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES => 1
_ => /usr/bin/php
OLDPWD => /root/php-lib

PHP Variables

Variable => Value
_SERVER["HOSTNAME"] => localhost.localdomain
_SERVER["TERM"] => xterm-256color
_SERVER["SHELL"] => /bin/bash
_SERVER["HISTSIZE"] => 1000
_SERVER["SSH_CLIENT"] => 10.32.16.37 62308 22
_SERVER["SSH_TTY"] => /dev/pts/1
_SERVER["USER"] => root
_SERVER["LS_COLORS"] =>
_SERVER["SSH_AUTH_SOCK"] => /tmp/ssh-RpQDiY3683/agent.3683
_SERVER["MAIL"] => /var/spool/mail/root
_SERVER["PATH"] => /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
_SERVER["PWD"] => /usr/share/nginx/html
_SERVER["LANG"] => en_US.UTF-8
_SERVER["SSH_ASKPASS"] => /usr/libexec/openssh/gnome-ssh-askpass
_SERVER["SHLVL"] => 1
_SERVER["HOME"] => /root
_SERVER["LOGNAME"] => root
_SERVER["SSH_CONNECTION"] => 10.32.16.37 62308 10.4.2.14 22
_SERVER["LESSOPEN"] => |/usr/bin/lesspipe.sh %s
_SERVER["G_BROKEN_FILENAMES"] => 1
_SERVER["_"] => /usr/bin/php
_SERVER["OLDPWD"] => /root/php-lib
_SERVER["PHP_SELF"] =>
_SERVER["SCRIPT_NAME"] =>
_SERVER["SCRIPT_FILENAME"] =>
_SERVER["PATH_TRANSLATED"] =>
_SERVER["DOCUMENT_ROOT"] =>
_SERVER["REQUEST_TIME"] => 1351803847
_SERVER["argv"] => Array
(
)

_SERVER["argc"] => 0

PHP License
This program is free software; you can redistribute it and/or modify
it under the terms of the PHP License as published by the PHP Group
and included in the distribution in the file: LICENSE

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any
questions about PHP licensing, please contact license@php.net.
Comment by Tim Smith (Inactive) [ 02/Nov/12 ]
It doesn't work even when the extension is compiled to use fastlz compression.

I recompiled php-ext-couchbase from git with current libcouchbase code, and configured to include fastlz support. I set couchbase.compressor=fastlz in php.ini. And the couchbase.compression_threshold is at 2000, same as the memcached extension setting.

Excerpt of phpinfo() for the couchbase extension:

couchbase support enabled
version 1.1.0-dp5
json support yes
fastlz support yes
zlib support yes

Directive Local Value Master Value
couchbase.compression_factor 1.3 1.3
couchbase.compression_threshold 2000 2000
couchbase.compressor fastlz fastlz
couchbase.serializer php php

The same test case fails in the same way:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 7598212603105511377 bytes) in /usr/share/nginx/html/cb.php on line 35

Comment by Tim Smith (Inactive) [ 02/Nov/12 ]
By the way, in order to compile with fastlz support, the following patch is needed:

diff --git a/couchbase.c b/couchbase.c
index 240ba3e..f4c14e5 100644
--- a/couchbase.c
+++ b/couchbase.c
@@ -41,6 +41,8 @@
 #include <libcouchbase/couchbase.h>
 #include "php_couchbase.h"
 #ifdef HAVE_COMPRESSION_FASTLZ
+# include "fastlz.h"
+/* Any other code that uses fastlz_* should only include the header */
 # include "fastlz.c"
 #endif
 #ifdef HAVE_COMPRESSION_ZLIB
diff --git a/views.c b/views.c
index 395cc2b..e818473 100644
--- a/views.c
+++ b/views.c
@@ -19,7 +19,7 @@
 #include <libcouchbase/couchbase.h>
 #include "php_couchbase.h"
 #ifdef HAVE_COMPRESSION_FASTLZ
-# include "fastlz.c"
+# include "fastlz.h"
 #endif
 #ifdef HAVE_COMPRESSION_ZLIB
 # include "zlib.h"

Otherwise linking couchbase.so fails because the fastlz functions are defined in more than one place.
Comment by Mark Nunberg [ 02/Nov/12 ]
Fixes for this are in progress.

http://review.couchbase.org/#/c/20604/ (in progress) fixes some of the crazy allocation attempts you've seen.

As for fastlz support, it shouldn't be too difficult to add it on.
Comment by Mark Nunberg [ 06/Nov/12 ]
A binary is attached. It's not compiled against the exact same version of php, but the zend api versions remain the same.

If the binary release doesn't work, I'd be happy to walk someone through building it from source (it's a very simple process -- much simpler than getting this binary built).
Comment by Mark Nunberg [ 06/Nov/12 ]
Note this is for the 1.1-dp php-ext branch. I've yet to backport this to the 1.0 branch
Comment by Matt Ingenthron [ 07/Nov/12 ]
Mark: Please determine if this issue is still valid and help me triage it into the appropriate release. I've assigned it to you for triage, not necessarily to fix it.
Comment by Mark Nunberg [ 07/Nov/12 ]
Awaiting approval on http://review.couchbase.com/22340

The is fixed in the code. Still needs backport to 1.0.x

Assigning back to you
Comment by Mark Nunberg [ 07/Nov/12 ]
http://review.couchbase.org/#/c/22340/ (1.1)
Comment by Matt Ingenthron [ 12/Nov/12 ]
Awaiting verification fix from customer.
Comment by Matt Ingenthron [ 14/Nov/12 ]
Trond: can you take care of backporting this to 1.0.x please?
Comment by Tim Smith (Inactive) [ 15/Nov/12 ]
More detail. I was personally unable to get the build of the latest PHP code to work with the beta2 release. I was hitting the error that is reported on http://www.couchbase.com/issues/browse/CCBC-126 :

Warning: Couchbase::__construct() [couchbase.--construct]: failed to create IO instance in /usr/share/nginx/html/cb.php on line 18

Building from sources let me get past that and actually test the build that the customer was trying. And following from that was a need to deal with LD_LIBRARY_PATH and symlink hacks.


A backport of the fastlz compression fix to 1.0.x, with an official release of that, would be best for this particular user's needs. Can we get an ETA on when that will be available?

Thanks,

Tim
Comment by Trond Norbye [ 16/Nov/12 ]
For 1.0.x: http://review.couchbase.org/#/c/22590/
Comment by Tim Smith (Inactive) [ 16/Nov/12 ]
I've confirmed it to work (using the current 1.0.x branch from github.com/couchbase/php-ext-couchbase).

I had to create a fake /usr/lib64/libvbucket.la to get it to compile: http://www.couchbase.com/issues/browse/CCBC-127

I noticed that compress.c has this redundant (unused) definition:

 92 /* headers which claim an uncompressed size above this figure are bad */
 93 #define DECOMP_SANITY_LIMIT 0x40000000

And this inaccurate comment:

172 /**
173 * sanity check, don't allocate over a GB, we should make this number
174 * smaller though
175 */

Obviously minor cleanup stuff, nothing significant that I can spot.

Would be great to get a 1.0.x package built and available for download with