更新
我尝试过使用相同配置的PhpMyAdmin,我得到了同样的错误503服务不可用。 所以似乎它与mongodb 模块无关,但它是Apache或PHP-FPM配置错误。在我看来,它最有可能是fcgi代理,它不会以正确的方式调用php-fpm,但我不知道出了什么问题。
原始问题
我一直在试着找几个解决方案。
配置:
这适用于index.php
<?php
echo phpinfo();
Php信息
PHP Version 7.0.18
MongoDB扩展版本1.2.8
我已经尝试在子目录中调用php(我怀疑代理参数存在问题),但它正在运行。
到目前为止的结论:
现在奇怪的部分
我将index.php的内容更改为:
<?php
require 'vendor/autoload.php';
$client = new MongoDB\Client("mongodb://localhost:3001");
安装的唯一作曲家模块是mongodb / mongodb composer require mongodb/mongodb
结果很简单503 Service Unavailable
无关的参数(mongodb://localhost:3001
)我有相同的错误,没有任何参数或故意错误的参数。
(但是如果你想知道我正在尝试连接到Meter应用程序的本地开发实例的mongodb,那就是端口3001的原因。并且连接正在使用外部程序/ Robomongo /)
目前我正在使用Apache ProxyPassMatch
,但我也尝试了SetHandler
方法(见下文)。我尝试过使用php-fpm 5.5
和php-fpm 7.0
(都安装了自制软件)
Apache配置:
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9007/Users/myuser/Projects/test/$1
或者
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9007"
</FilesMatch>
Apache或php-fpm日志中没有错误消息(即使使用loglevel调试),尽管错误日志记录正在运行(我已经尝试过有意识的PHP语法错误,并在php-fpm错误日志文件中生成了正确的错误消息) e.g。
<?php
require 'vendor/autoload.php'; // include Composer's autoloader
$client = new MongoDB;
显示错误消息,因此错误记录正常
致命错误:未捕获错误:找不到类'MongoDB' /Users/myuser/Projects/test/index.php:17堆栈跟踪:#0 {main}抛出 第17行/Users/myuser/Projects/test/index.php
我尝试使用以下代码连接到MySQL数据库:
$mysqli = new mysqli("localhost", "user", "password", "dbname");
$res = $mysqli->query("SELECT * FROM table");
print_r($res);
它就像一个魅力。
任何帮助都将不胜感激。
编辑: 作为评论请求的composer.json内容
{
"require": {
"mongodb/mongodb": "^1.1"
}
}