【发布时间】:2018-03-03 16:36:47
【问题描述】:
我正在尝试使用 composer 测试 monolog 包(完全披露:这是我第一次尝试使用 composer)并且在运行此代码时收到 500 错误:
<?php
// composer autoloader
require_once 'vendor/autoload.php';
// Shortcuts for simpler usage
use \Monolog\Logger;
use \Monolog\Formatter\LineFormatter;
use \Monolog\Handler\StreamHandler;
// Common logger
$log = new Logger('files');
// Line formatter without empty brackets in the end
$formatter = new LineFormatter(null, null, false, true);
// Debug level handler
$debugHandler = new StreamHandler('debug.log', Logger::DEBUG);
$debugHandler->setFormatter($formatter);
// Error level handler
$errorHandler = new StreamHandler('error.log', Logger::ERROR);
$errorHandler->setFormatter($formatter);
// This will have both DEBUG and ERROR messages
$log->pushHandler($debugHandler);
// This will have only ERROR messages
$log->pushHandler($errorHandler);
// The actual logging
$log->debug('I am debug');
$log->error('I am error', array('productId' => 123));
?>
我在 Dreamweaver 中看到 monolog_test.php 中的三个“使用”行以红色突出显示:
错误信息是:
在我的 /Applications/MAMP/logs/php_error.log 中:
[03-Mar-2018 14:10:05 America/Toronto] PHP 致命错误:类 'Monolog\Logger' 未在 /Users/Ross/Dropbox/htdocs/wonderfest/secure/contest/monolog_test.php 在第 13 行
我的文件系统设置如下所示:
我在我的 Mac 上全局安装了 Composer,我知道安装很好,因为我能够使用 composer require 添加一些包。我的 composer.json 文件:
{
"require": {
"monolog/monolog": "1.0",
"phpfastcache/phpfastcache": "^6.1",
"mpdf/mpdf": "^7.0"
}
}
还有我的供应商\autoload.php:
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit348f040c8a2a7d48c0a311fb1af10c08::getLoader();
我想我的问题是:除了安装包之外,我是否必须做任何其他事情才能使它们的命名空间可用?
【问题讨论】:
-
HTTP 500 是一般的服务器端错误消息。每当您看到这一点时,您的第一步应该是检查错误日志以获取更多详细信息。
-
使用 php_error.log 中的详细信息更新了问题
标签: php namespaces composer-php monolog