ich den Anweisungen auf mongodb/mongo-php-library offiziellen Repository folgenphp7 mongodb Treiber OBJECTID nicht gefunden
$ pecl install mongodb
$ echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
aber wenn ich versuche, einen Test mit phpunit über diesen Konstruktor auszuführen:
use MongoDB\BSON\ObjectID;
(...)
/**
* X constructor.
*
* @param ObjectID|null $id
*/
public function __construct(ObjectID $id = null)
{
if (!$id) {
$id = new ObjectID();
}
$this->id = $id;
}
(...)
ich diese Fehlermeldung bekam
1) tests\X\X\XTest::testBeConstructed
Error: Class 'MongoDB\BSON\ObjectID' not found
BEARBEITEN
wenn ich eine Testdatei mit dieser Zeile Code zu erstellen:
<?php
echo new \MongoDB\BSON\ObjectID();
und ich führen Sie es mit
php test.php
es zeigt:
581ddc9c6fb3720352664f11
ZWEITE EDIT
Wie in den Kommentaren erwähnt, setze ich einige Debug-Zeilen in der ersten Zeile auf m y phpunit Tests:
var_dump(extension_loaded('mongodb'));
echo phpversion().PHP_EOL;
print_r(get_loaded_extensions());
hier ist der Ausgang
bool(true)
7.0.8-0ubuntu0.16.04.3
Array
(
[0] => Core
[1] => date
[2] => libxml
[3] => openssl
[4] => pcre
[5] => zlib
[6] => filter
[7] => hash
[8] => pcntl
[9] => Reflection
[10] => SPL
[11] => session
[12] => standard
[13] => phpdbg
[14] => mysqlnd
[15] => PDO
[16] => xml
[17] => bcmath
[18] => calendar
[19] => ctype
[20] => curl
[21] => dom
[22] => mbstring
[23] => fileinfo
[24] => ftp
[25] => gd
[26] => gettext
[27] => iconv
[28] => intl
[29] => json
[30] => exif
[31] => mcrypt
[32] => mysqli
[33] => pdo_mysql
[34] => Phar
[35] => posix
[36] => readline
[37] => shmop
[38] => SimpleXML
[39] => sockets
[40] => sysvmsg
[41] => sysvsem
[42] => sysvshm
[43] => tokenizer
[44] => wddx
[45] => xmlreader
[46] => xmlwriter
[47] => xsl
[48] => Zend OPcache
)
PHPUnit 5.6.2 by Sebastian Bergmann and contributors.
im laufenden phpunit mit dem folgenden Befehl
phpdbg -qrr /root/.composer/vendor/bin/phpunit
Warum ist phpunit nicht die mongodb ext erkennen?
Was fehlt?
Dank
HINWEIS: Wenn Sie, warum im root fragen, ist, weil diese in einem Container Docker ist
Was war die Ausgabe der Befehle? Ich nehme an, Sie haben sie als normaler Benutzer ausgeführt, und die Erweiterung wird aufgrund unzureichender Berechtigungen nicht installiert. Überprüfen Sie, ob die Erweiterung geladen ist: 'php -m | grep -i mongo'. –
@RuslanOsmanov die Bibliothek kompiliert einfach gut und installiert ok. die Ausgabe an den Befehl, Sie erwähnen; Ausführung war: mongodb – bitgandtter
Haben Sie das Skript in der Befehlszeile getestet? Vielleicht laden andere SAPIs (Apache, FPM, etc.) 'php.ini' von verschiedenen Pfaden. –