【问题标题】:OSx php7.1 problemsOSx php7.1 问题
【发布时间】:2017-10-07 07:22:28
【问题描述】:

我是 OSx 的新手,我的 php 安装和 SPL 功能有问题。有时当我尝试通过 apache 访问 symfony 项目时,会出现以下错误。

当 spl_autoloader 尝试加载 ParameterBag 类时:

警告:class_implements():类 /.[^.]+.twig$/ 不存在,无法加载

堆栈跟踪:

1 in DebugClassLoader.php line 243
2 at ErrorHandler->handleError('2', 'class_implements(): Class /\.[^.]+\.twig$/ does not exist and could not be loaded', '/Users/mtertishniy/sites/dvsota/vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php', '243', array('class' => 'Symfony\Component\HttpFoundation\ParameterBag', 'file' => '/Users/mtertishniy/sites/dvsota/vendor/composer/../symfony/symfony/src/Symfony/Component/HttpFoundation/ParameterBag.php', 'exists' => true, 'refl' => object(ReflectionClass), 'name' => 'Symfony\Component\HttpFoundation\ParameterBag', 'notice' => array(), 'len' => '8', 'ns' => 'Symfony\', 'parent' => false, 'parentInterfaces' => array('/\.[^.]+\.twig$/' => '1'), 'deprecatedInterfaces' => array(), 'interface' => '/\.[^.]+\.twig$/'))
3 at class_implements('/\.[^.]+\.twig$/') in DebugClassLoader.php line 243
4 at DebugClassLoader->loadClass('Symfony\Component\HttpFoundation\ParameterBag')
5 at spl_autoload_call('Symfony\Component\HttpFoundation\ParameterBag') in Request.php line 247

其他奇怪的错误:

DebugClassLoader.php 第 243 行中的 OutOfMemoryException:

错误:允许的内存大小 1073741824 字节已用尽(尝试分配 140495632205216 字节)

我已经调试了这个错误,发现在这种情况下自动加载器试图加载格式错误的接口:

我已经从 brew 安装了 httpd 和 PHP 7.1。

我的 php 模块:

$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imagick
intl
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
odbc
openssl
pcntl
pcre
PDO
pdo_mysql
PDO_ODBC
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xdebug
xml
xmldiff
xmlreader
xmlrpc
xmlwriter
xsl
yaml
zip
zlib

[Zend Modules]
Xdebug

如何解决这个问题?

【问题讨论】:

    标签: php macos symfony macos-sierra spl


    【解决方案1】:

    因为你的限制很大。

    您正在尝试分配 140495GB 的数据。

    你要么需要:

    • 重新考虑您的应用程序需要多少内存(推荐)
    • 将内存限制增加到 140495GB(不推荐)。

    尝试分配 128MB 到 256MB ... 的数据。

    【讨论】:

    • @KorozCo 我使用与我的 Linux 服务器相同的限制,一切正常。 140495632205216 字节 = 140495,63220521601 GB。这不是主要问题。问题是脚本在随机时间停止工作(关于上述名称的问题)。比如请求1,一切正常,但是请求2和3,有问题,然后又好了。当 DebugClassLoader 尝试加载 SPL 接口(名称似乎解析错误)时,这种情况偶然发生!
    • @koninka,您是否尝试过限制 128MB 或 256MB 或 512MB?
    • 当然,我的内存限制是1GB。而且这不是重点! 我已经调试过这个错误,发现在这种情况下自动加载器试图加载格式错误的接口
    • @koninka Ты решил свою ошибку?
    • 试试composer install
    【解决方案2】:

    我终于想通了!这是核心 php https://bugs.php.net/bug.php?id=74015

    问题已关闭。

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2018-09-11
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 2014-01-04
      • 1970-01-01
      相关资源
      最近更新 更多