0

最初,我遇到的问题是,虽然我通过光学检查获得了相同的路径,但 file_exists() 对一个返回 true,对另一个返回 false。在花了几个小时缩小我的问题之后,我最终得到了以下代码......(路径已编辑)

$myCorePath = $modx->getOption('my.core_path', null, $modx->getOption('core_path').'components/my/');

$pkg1 = $myCorePath.'model/';
$pkg2 = MODX_CORE_PATH . 'components/my/model/';
$pkg3 = '/path/to/modx/core/components/my/model/';

var_dump($pkg1, $pkg2, $pkg3);

...及其输出:

string '/path/to/modx/core/components/my/model/' (length=37)
string '/path/to/modx/core/components/my/model/' (length=78)
string '/path/to/modx/core/components/my/model/' (length=78)

所以两个版本,有趣的是包括简单地写下字符串,显然使用宽字符(这些工作,file_exists()-wise),而遗憾的是我更喜欢的变体使用窄字符。我试图对此进行研究,但我唯一得到的结果告诉我,php 没有宽字符串之类的东西。我还使用十六进制编辑器验证了所有字符串常量在 php 文件中每个字符实际上只占用一个字节。

phpinfo() 告诉我我有 PHP 版本 5.4.9,并且我在 64 位 linux 机器上运行,fwiw。手册是一周前编辑的;它的信息不准确,还是这里发生了什么?

4

1 回答 1

0

我认为这是由多字节编码引起的。

于 2013-09-12T13:41:39.983 回答