Giter VIP home page Giter VIP logo

mongo-php-driver-legacy's Introduction

Build Status

Installation

To build and install the driver:

phpize
./configure
make
sudo make install

Then, add the following to your php.ini file:

extension=mongo.so

Enabling enterprise features

To connect to MongoDB Enterprise using SASL (GSSAPI) or LDAP (PLAIN) you need to build the driver against cyrus-sasl2 (external library). This is done by passing --with-mongo-sasl to ./configure, optionally passing in the directory to where cyrus-sasl2 was installed:

phpize
./configure --with-mongo-sasl=/usr/local
make
sudo make install

Installing on Windows

Windows builds are available through http://pecl.php.net/package/mongo.

Builds for older driver versions may be found through https://s3.amazonaws.com/drivers.mongodb.org/php/index.html.

Each driver release includes various builds to support specific versions of PHP and Windows. Select the correct DLL file for your environment, and add the following to your php.ini file (VERSION will vary by environment):

extension=php_mongo-VERSION.dll

If the DLL is not located within the directory specified by the extension_dir INI setting, you may need to specify its full path.

Documentation

See the PHP manual.

How To Ask For Help

When asking for support, or while providing feedback in the form of bugs or feature requestes, please include the following relevant information:

  • Detailed steps on how to reproduce the problem, including a script that reproduces your problem, if possible.
  • The exact PHP version used. You can find this by running php -v on the command line, or by checking the output of phpinfo(); in a script requested through a web server.
  • The exact version of the MongoDB driver for PHP. You can find this by running php --ri mongo | grep Version on the command line, or by running a script containing <?php echo phpversion("mongo"); ?>.
  • The operating system and version (e.g. Windows 7, OSX 10.8, ...).
  • How you installed the driver, either via your distribution's package management, with "brew", with an *AMP installation package, or through a manual source compile and install.
  • With connection and replica set selection issues, please also provide a full debug log. See further down on how to make one.

Support / Feedback

For issues with, questions about, or feedback for the PHP driver, please look into our support channels. Please do not email any of the PHP driver developers directly with issues or questions—you're more likely to get an answer on the mongodb-user list on Google Groups.

Bugs / Feature Requests

Think you have found a bug? Want to see a new feature in the driver? Please open a case in our issue management tool, JIRA:

Bug reports in JIRA for all driver projects, as well as for the MongoDB server project, are public. Please do not add private information to bug reports.

Security Vulnerabilities

If you’ve identified a security vulnerability in a driver or any other MongoDB project, please report it according to the instructions here.

Testing

The tests are not available as part of the PECL package, but they are available on Github.

See CONTRIBUTING.md for how to run and create new tests.

Full debug log

You can make a full debug log by using the following code:

<?php
/*
 * This script will catch all internal driver logging for MongoDB and log them
 * to a file /tmp/MONGO-PHP-LOG.<unix-timestamp>. This log will give the
 * driver developers more or less all the information they'll need to debug
 * this issue
 */
 
function module2string($module)
{
    switch ($module) {
        case MongoLog::RS: return "REPLSET";
        case MongoLog::CON: return "CON";
        case MongoLog::IO: return "IO";
        case MongoLog::SERVER: return "SERVER";
        case MongoLog::PARSE: return "PARSE";
        default: return $module;
    }
}
 
function level2string($level)
{
    switch ($level) {
        case MongoLog::WARNING: return "WARN";
        case MongoLog::INFO: return "INFO";
        case MongoLog::FINE: return "FINE";
        default: return $level;
    }
}
 
function logMongo($module, $level, $message, $save = false) {
    static $log = "";
    $log .= sprintf("%s | %s (%s): %s\n", date('Y-m-d H:i:s',time()), module2string($module), level2string($level), $message);
 
    if ($save) {
        file_put_contents("/tmp/MONGO-PHP-LOG." . time(), $log);
        $log = "";
    }
}
 
function saveMongoLogException($ex) {
    if ($ex instanceof MongoException) {
        $msg = sprintf("Uncaught exception: %s, %s\n",  get_class($ex), $ex->getMessage());
        logMongo(get_class($ex), "ERROR", $ex->getMessage(), true);
    }
    throw $ex;
}

function saveMongoLog() {
    logMongo("EXIT", "EXIT", "EXIT", true);
}
 
MongoLog::setLevel(MongoLog::ALL);
MongoLog::setModule(MongoLog::ALL);
MongoLog::setCallback("logMongo");

register_shutdown_function("saveMongoLog");
 
/* If an global exception handler is used, or a default exception handler is
 * already registered, please comment out this line and put into your catch
 * block: saveMongoLogException($exception); */
set_exception_handler("saveMongoLogException");
?>

Credits

Jon Moss

  • Came up with the idea and implemented MongoCursor implementing Iterator

Pierre-Alain Joye

  • Helped build the Windows extension and has provided the VC6 builds

Cesar Rodas

  • Created the MongoCursor::info method
  • Implemented GridFS read streaming

William Volkman

  • Made connection code check & handle error status

Derick Rethans

  • Implemented MongoInt32, MongoInt64 and related php.ini options.

Taneli Leppä

  • Provided a patch for PHP-706 to swap out select() for poll().

mongo-php-driver-legacy's People

Contributors

aartsie avatar ad7six avatar billf avatar bjori avatar crodas avatar crumbjp avatar d8jeffr avatar derickr avatar erh avatar fprefect avatar jmikola avatar kchodorow avatar litvinok avatar mattparlane avatar pborreli avatar remicollet avatar rjonker avatar rmarscher avatar timandes avatar treshugart avatar wanderr avatar weltling avatar winkbrace avatar zakay avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.