is_readable() returns 假而 require_once returns 真
is_readable() returns false while require_once returns true
每当我在我的主机在 VM 上共享的文件上使用函数 is_readable
时,我都会得到 false,预期结果是 true。
我正在为现有项目设置本地开发环境。我不想使用其他功能,因为它是一个复杂的遗留系统,我担心我会隐藏其他潜在的问题,我会在以后的开发中偶然发现。
VM 是使用 vagrant 和 virtualbox 设置的。 OS 是一台装有 Zend Server 的 Windows Server 2008 机器,在主机上共享 PHP 5.3 托管代码,即 Mac。
共享文件夹创建如下:
vmConfig.vm.synced_folder "/path/to/shared/folder/cms", '/cms', mount_options: ["dmode=775,fmode=664,type=smb"], owner: 'wcmadmin', group: 'wcmadmin'
一段代码试图查看文件是否可读。 is_readable
returns 错误。我通过命令行与用户 wcmadmin
和 Administrator
运行 脚本,我得到了相同的结果。
function smarty_core_assemble_plugin_filepath($params, &$smarty)
{
[...]
// try relative to cwd (or absolute)
if (is_readable($_plugin_filepath)) {
$_return = $_plugin_filepath;
break;
}
[...]
我做了一个测试脚本来进一步挖掘:
echo 'is_readable: ';
var_export(is_readable('C:\cms\path\to\file\file.php'));
echo "\n";
echo 'require_once: ';
var_export(require_once('C:\cms\path\to\file\file.php'));
我得到以下结果:
is_readable: false
require_once: true
在文件 returns 上正确使用 file_get_contents
内容。
使用cygwin,文件权限如下:
$ ls -al C:\cms\path\to\file\file.php
-rw-r--r-- 1 wcmadmin None 1498 Apr 18 07:22 C:\cms\path\to\file\file.php
为了解决这个问题,文件路径已经更改。虽然它们可能存在一些差异,但在实际测试中它们会正确解决。
这是 virtual box 中的一个错误,从 5.0.18 版本开始仍然存在。
每当我在我的主机在 VM 上共享的文件上使用函数 is_readable
时,我都会得到 false,预期结果是 true。
我正在为现有项目设置本地开发环境。我不想使用其他功能,因为它是一个复杂的遗留系统,我担心我会隐藏其他潜在的问题,我会在以后的开发中偶然发现。
VM 是使用 vagrant 和 virtualbox 设置的。 OS 是一台装有 Zend Server 的 Windows Server 2008 机器,在主机上共享 PHP 5.3 托管代码,即 Mac。
共享文件夹创建如下:
vmConfig.vm.synced_folder "/path/to/shared/folder/cms", '/cms', mount_options: ["dmode=775,fmode=664,type=smb"], owner: 'wcmadmin', group: 'wcmadmin'
一段代码试图查看文件是否可读。 is_readable
returns 错误。我通过命令行与用户 wcmadmin
和 Administrator
运行 脚本,我得到了相同的结果。
function smarty_core_assemble_plugin_filepath($params, &$smarty)
{
[...]
// try relative to cwd (or absolute)
if (is_readable($_plugin_filepath)) {
$_return = $_plugin_filepath;
break;
}
[...]
我做了一个测试脚本来进一步挖掘:
echo 'is_readable: ';
var_export(is_readable('C:\cms\path\to\file\file.php'));
echo "\n";
echo 'require_once: ';
var_export(require_once('C:\cms\path\to\file\file.php'));
我得到以下结果:
is_readable: false
require_once: true
在文件 returns 上正确使用 file_get_contents
内容。
使用cygwin,文件权限如下:
$ ls -al C:\cms\path\to\file\file.php
-rw-r--r-- 1 wcmadmin None 1498 Apr 18 07:22 C:\cms\path\to\file\file.php
为了解决这个问题,文件路径已经更改。虽然它们可能存在一些差异,但在实际测试中它们会正确解决。
这是 virtual box 中的一个错误,从 5.0.18 版本开始仍然存在。