我创建了一个名为 Mytest 的测试模块。从模块保存值时,我得到一个空白页,上面写着“对不起!尝试访问受限文件。”。有谁知道,为什么会这样。对此的任何帮助都非常感激。
11 回答
vTiger 错误的最可能原因“对不起!尝试访问受限文件。” 'config.inc.php' 中的 $root_directory 值是否不正确或拼写错误。
为了更正它,请按照以下步骤操作:
Go to your vTigerCRM directory
Open “config.inc.php” with your favorite text editor
Go to line 86 and adjust $root_directory value to correct vTiger
directory. Note, that the directory must end with /. It should look
something like this – $root_directory = ‘/var/www/vtigercrm/’;
缓存内存也有问题。因此,请检查您的缓存文件中的模板文件。为此,请转到您的 vTigerCRM 目录。然后转到 Smarty->templates_c。
在这里,您将获得缓存文件列表。删除此文件并检查您的问题是否已解决。
不要担心删除此文件。
当尝试从您的自定义模块中包含文件时,您将收到这些消息,因为 Vtiger 认为您正在从他们认为不安全的位置包含这些文件。
为避免此错误,您可以使用 Vtiger 中使用模块的标准方式,如下所示导航到它......./index.php?module=Mytest&action=index
:Vtiger 将包含您的模块,现在您无需包含CRMEntity
其他data
或utils
相关文件。它应该都可以通过这种方式获得,但请确保您使用的是for等global
语句。$current_user
$current_module
另一种方法是编辑位于的以下函数utils/CommonUtils.php
:
heckFileAccessForInclusion()
和checkFileAccess()
删除或注释掉die()
这些函数中的以修复它。
在 Save.php 文件中,只需添加一行。
$focus->column_fields['assigned_user_id'] = '';
之前
if($_REQUEST['assigntype'] == 'U') {
$focus->column_fields['assigned_user_id'] = $_REQUEST['assigned_user_id'];
} elseif($_REQUEST['assigntype'] == 'T') {
$focus->column_fields['assigned_user_id'] = $_REQUEST['assigned_group_id'];
}
支持卡巴斯基所说的:
转到/include/database/PearDatabase.php
并在
$adb->setDebug(true);
之后添加$adb->connect();
我刚刚写了一个模块并收到此错误,这是因为我遗漏了记录无法保存:
$moduleInstance->setEntityIdentifier($fieldInstance);
检查它试图引用的文件权限和文件路径。
如果您想在索引文件中调试更多设置 $adb->setDebug(true) 并检查错误。
有几件事浮现在脑海:
您是否真的创建了 modules/CustomeModule 目录并填充了它?(使用 vtlib/ModuleDir/5.4.0 中的模板,然后编辑 CustomeModule.php 的文件名和类)
检查您的模块类定义的大小写,例如类 CustomeModule 与类 Customemodule
如果您在开发模块/Mytest 代码时使用任何版本控制或符号链接,那么这可能会触发“抱歉!尝试访问受限文件”。消息。
在模块设置脚本中确保您已添加此行。
$module->initTables(); $module->initWebservice();
看来您没有设置 Smarty 文件夹的写入权限
检查所有语言文件是否存在。
即使语言文件不在磁盘上,用户模块也允许管理员用户配置用户的语言。
为了快速验证这确实是问题所在:- - 编辑 include/utils/CommonUtils.php 并打印 $realfilepath 变量,并注释掉 die(); - 在数据库中,“从 xxx_users 中选择不同的语言”;
您可以通过下载所需的文件来解决此问题。
作为快速修复(阅读:hack):- - 转到包含/语言目录 - 将现有语言文件复制为所需的文件。(可能并不总是有效 - 例如 en_us 到 en_gb 很好,但 en_us 到 sp_es 不是)
您的 vtiger 安装中可能缺少文件。
要找出哪个是任务,您需要编辑 include/utils/CommonUtils.php 文件。用文本编辑器打开它,绕过第 2755 行并添加以下内容
echo “REAL: $realfilepath, ROOT: $rootdirpath”;
死前(对不起....)
这将在屏幕上打印哪个是丢失的文件。
有时这个错误是由不存在的模块引起的,我的意思是 vtiger 认为你有一个模块但文件不在那里(可能是由于迁移到新服务器的错误引起的)。
- 禁用一些模块并重试,直到找到哪个模块损坏。
就我而言,损坏的模块是 VGS。
我在 vtiger 7.3 上解决了这个问题。(也许它适用于其他版本)
我在配置设置中访问了 vtiger 的用户权限,并使用相同的设置再次更新了所有这些 .. 并将它们设置为更默认的设置 .. 他们所有用户都出现了,我能够创建新用户 .. 再次更改密码。
我建议注销并可能强制刷新并稍等片刻以使其正常工作。