0

我有一个包含几个包含并Simple HTML DOM用于各种任务的模板。

当我包含库时,在某些页面上出现以下错误:

致命错误:第 142 行 C:\xampp\htdocs\aa\template.php 中允许的内存大小为 134217728 字节已用尽(试图分配 28672 字节)

这是我在模板中的 php 代码:

<?php
$currentFile = $_SERVER["PHP_SELF"];
$parts = Explode('/', $currentFile); 
$page = $parts[count($parts) - 1];
$parent = basename(dirname($_SERVER['PHP_SELF']));
$both = $parent.'/'.$page;
$content = $filename.".html";
$sidebar = $filename. "-sidebar.html";

?>
<?php include('dom.php'); ?>
<?php 

if (!isset($title)) {
$html = file_get_html($_SERVER['DOCUMENT_ROOT'].'/aa/content/'.$content);

$element = $html->find('h1'); 
if ($element) {
$titletag = $element[0]->plaintext . ' | about-berlin.com';
}

    }
else {
$titletag = $title; 
}
$html->__destruct();
?>
<!DOCTYPE html>

奇怪的是,即使我只包含这样的库,而没有任何代码使用它,我也会遇到相同的内存错误:

<?php include('dom.php'); ?>

如果我不包括它,一切都会运行没有错误。

file_get_html()甚至不使用似乎是造成大多数问题的原因,怎么可能得到这个错误?我可以在不改变的情况下尝试解决这个问题php.ini吗?

编辑

一些澄清。我的模板是这样工作的:

请求了 somepage.php。里面是以下代码:

<?php 
$path_parts = pathinfo(__FILE__);
$filename = $path_parts['filename'];

include ($_SERVER['DOCUMENT_ROOT'].'/aa/template.php');
?>

在模板中,同名的内容文件 (somepage.php) 包含在名为 content 的文件夹中。

4

3 回答 3

2

尝试

$html->clear(); 
unset($html);

内存泄漏是由于 php5 循环引用内存泄漏

 ?>
<?php include('dom.php'); ?>
<?php 

可以替换为

include('dom.php');

只是为了保持清洁:)

于 2013-09-12T15:16:19.647 回答
1

更换您的

include(…);

include_once(…);

将阻止您的脚本包含多个脚本。如果您需要一个脚本来使其工作,您应该使用

require_once(…);

我认为您的 dom.php 中还有其他内容。也许在包含显示代码的脚本中。另一件事是您应该删除从 opening-php-tags 跟随的关闭 php-tags 以使代码更具可读性。就像是

?>
<?php

不是必需的。

于 2013-07-24T18:15:28.037 回答
0

您可以在 .htaccess 中尝试

<IfModule mod_php5.c>
php_value memory_limit 64M
</IfModule>
于 2013-07-24T17:09:31.900 回答