Re: PHP Connection over SSL

From: joe@xxxxxxxxxxxx
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Tue, 10 May 2016 14:03:47 -0700 (PDT)
Why ads?


On Tuesday, May 10, 2016 at 3:39:01 PM UTC-5, j...@xxxxxxxxxxxx wrote:


It appears that the mongodb.so extension you're using was compiled 
against a version of PHP without OpenSSL (i.e. the PHP environment whose 
phpize binary was used when building). That resulted in those functions not 
being defined during the build. At runtime, the extension is running with a 
version of PHP that does have OpenSSL and we were blindly expecting those 
functions to exist. I've opened PHPC-698 
<https://jira.mongodb.org/browse/PHPC-698> to track the bug and 
implemented a fix in PR #324 
<https://github.com/mongodb/mongo-php-driver/pull/324>.

That said, the fix above is simply going to raise a meaningful exception 
in your current scenario (in lieu of the undefined symbol error). You'll 
still want to take some action to properly correct this on your end by 
doing one of the following:

   - Disabling "verify_expiry" option in the SSL context options passed 
   to MongoDB\Manager\Client. The default stream context (which we use if none 
   is provided) enables this.
   - Rebuilding the extension with the "pecl" and/or "phpize" command 
   that ships with MAMP.
   
Specifying SSL context options can be done like so:

$context = stream_context_create(['ssl' => ['verify_expiry' => false]]);
$manager = new MongoDB\Driver\Manager($uri, [], ['context' => $context]);

This uses the third $driverOptions argument to the Manager constructor 
(or MongoDB\Client in the userland library). At present, the "mongodb" 
extension does not have documentation for the SSL context options. I've 
opened PHPC-700 <https://jira.mongodb.org/browse/PHPC-700> to track 
that. The legacy driver documentation 
<http://php.net/manual/en/mongo.context.php> does cover this and links 
to the relevant SSL context options (which is a general PHP topic not 
specific to our driver) and can be referenced in a pinch. Note that the 
custom "mongodb" context is not supported at all in the new driver (that's 
specific to some stream logging features that only exist in the legacy 
driver).

Let me know if you'd like me to clarify any of this further, and thanks 
for your patience in the diagnosis.


Brilliant! Thank you! I just rebuilt the extension ensuring OpenSSL was 
configured into the PHP environment and that took care of the issue. Thanks 
for adding in the exception - that should make it easy to diagnose next 
time I forget. 

Thanks for all of the help!

Joe


Also, it's worth noting that the ini option mongodb.debug can severely 
impact performance based on your environment. I forgot to remove it and saw 
performance of my code get cut in half while it generated a 3GB log file 
very quickly (this was a CLI to migrate some data).

-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/d08855ae-ddec-4304-b5c2-7ee1df3d1198%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?