【发布时间】:2016-06-17 09:53:35
【问题描述】:
我对一个简单的 chdir 和 require 有疑问。
从第一个文件:web/index_cluster.php
我正在尝试加载第二个:ezpublish_legacy/index_cluster.php
我需要的文件没有加载,但我不知道为什么......
这是我的配置。
- PHP 5.4.16
- 从 eZ Publish 4.7 升级到 eZ Pubslih 5.90.0alpa1(基于 SF2)
- Red Hat Enterprise Linux Server 6.4 版(圣地亚哥)
ezpublish 日志和 apache 中的 Allowed memory size 上没有任何内容
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 240 bytes) in /path/to/my/www/web/index_cluster.php on line 11
这是我的(简化的)树
www
`-- ezpublish_legacy
|-- index_cluster.php
`-- web
|-- index_cluster.php
这是原始代码
$legacyRoot = '/path/to/my/www/ezpublish_legacy';
chdir( $legacyRoot );
require 'index_cluster.php';
这是我的解决方法
$legacyRoot = '/path/to/my/www/ezpublish_legacy';
chdir( $legacyRoot );
require '/path/to/my/www/ezpublish_legacy/index_cluster.php';
我已经尝试了我能想到的一切:
$legacyRoot = '/path/to/my/www/ezpublish_legacy';
require $legacyRoot.'/index_cluster.php';
=> 工作
$legacyRoot = '/path/to/my/www/ezpublish_legacy';
echo getcwd() . "\n";
chdir( $legacyRoot );
echo getcwd() . "\n";
die()
require 'index_cluster.php';
=> 正是我所期待的
/path/to/my/www/web
/path/to/my/www/ezpublish_legacy
使用绝对路径加载并检查加载文件的当前目录给出预期结果
web/index_cluster.php
require '/path/to/my/www/ezpublish_legacy/index_cluster.php';
ezpublish_legacy/index_cluster.php
echo getcwd() . "\n";
die();
结果(我所期待的)
/path/to/my/www/web
web/index_cluster.php
$legacyRoot = '/path/to/my/www/ezpublish_legacy';
chdir( $legacyRoot );
require '/path/to/my/www/ezpublish_legacy/index_cluster.php';
ezpublish_legacy/index_cluster.php
echo getcwd() . "\n";
die();
结果(我所期待的)
/path/to/my/www/ezpublish_legacy
更新:我尝试了一些新的东西:
require "/index_cluster.php" => instant fail
PHP 警告:需要(/index_cluster.php):无法打开流:第 11 行的 /path/to/my/www/web/index_cluster.php 中没有此类文件或目录
require "index_cluster.php" => trying loading for 10 seconds then fail
PHP 致命错误:第 11 行 /path/to/my/www/web/index_cluster.php 中允许的内存大小为 536870912 字节已用尽(尝试分配 240 字节)
【问题讨论】:
-
您的错误信息是关于 PHP 内存限制的。这与 chdir 和 require 无关。
-
是的,我在第一次写作时忘记了这个 apache 错误,因为它对我来说不是“相关的”......后来添加了它。尽管如此,问题仍然是由 chdir/require 组合引起的
-
* 不相关,因为我已将我的 php 内存限制强制为 2G 和更多相同的东西! PHP致命错误:允许的内存大小为2147483648字节已用尽(试图分配130968字节)
-
升级到 alpha 版本是否有特定原因?您是否尝试过升级到最新的稳定版本?
-
我不知道我们为什么要使用 alpha 版本,事实上它是一个基于 alpha 的“公司”分支
标签: php require ezpublish chdir