Vtiger自定义模块:“抱歉!尝试访问受限文件。”

时间:2012-01-30 08:03:00

标签: php crm vtiger

我创建了一个测试模块名称Mytest。在保存模块中的值时,我得到一个空白页面并说“抱歉!尝试访问受限文件。”。有谁知道,为什么会发生这种情况。对此的任何帮助都非常感激。

11 个答案:

答案 0 :(得分:7)

导致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。

在这里,您将获得缓存文件列表。删除此文件并检查天气是否解决了问题。

不要担心删除此文件。

答案 1 :(得分:5)

尝试从自定义模块中包含文件时,您将收到这些消息,因为Vtiger认为您从他们发现的位置包含这些文件时相当不安全。

为避免此错误,您可以使用标准方式在Vtiger中使用模块,方法是导航到它:......./index.php?module=Mytest&action=index。 Vtiger将包含您的模块,现在您无需包含CRMEntity和其他datautils相关文件。它应该以这种方式提供,但请确保您使用global语句$current_user$current_module等。

另一种方法是编辑utils/CommonUtils.php中的以下功能:

heckFileAccessForInclusion()checkFileAccess()

删除或注释掉这些功能中的die()以修复它。

答案 2 :(得分:4)

在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'];
}

答案 3 :(得分:4)

再说一下卡斯巴斯基说的话:

转到/include/database/PearDatabase.php并添加 在$adb->setDebug(true);

之后$adb->connect();

我刚写了一个模块并收到了这个错误,这是因为记录无法保存,因为我遗漏了: $moduleInstance->setEntityIdentifier($fieldInstance);

答案 4 :(得分:3)

查看它试图引用的文件权限和文件路径。

如果您想在索引文件中调试更多set $ adb-> setDebug(true)并检查错误。

答案 5 :(得分:3)

有些事情让人想起:

  1. 您是否实际创建了模块/ CustomeModule目录并已填充 它? (使用vtlib / ModuleDir / 5.4.0中的模板然后编辑 文件名和类CustomeModule.php)

  2. 检查模块类定义的大小写,例如: class CustomeModule 与课程Customemodule

  3. 如果您在开发中使用任何版本控制或符号链接 你的模块/ Mytest代码然后这可以触发“抱歉!尝试 访问受限文件。“messages。

  4. 在模块设置脚本中,请确保已添加此行。

  5. $模块 - > initTables(); $模块 - > initWebservice();

答案 6 :(得分:2)

您似乎没有为Smarty文件夹设置写入权限

答案 7 :(得分:2)

检查所有语言文件是否存在。

即使磁盘上没有语言文件,用户模块也允许管理员用户配置用户的语言。

要快速确认这确实是问题: - - 编辑include / utils / CommonUtils.php并打印$ realfilepath变量,并注释掉die(); - 在数据库中,“从xxx_users中选择不同的语言”;

您可以通过下载所需文件来解决此问题。

作为快速修复(阅读:黑客): - - 转到include / language目录 - 将现有语言文件复制为必需的语言文件。 (可能并不总是有效 - 例如en_g到en_gb很好,但是sp_es不是en_us)

答案 8 :(得分:1)

您的vtiger安装中可能缺少一个文件。

要找出哪个是任务,您需要编辑include / utils / CommonUtils.php文件。用文本编辑器打开它,绕过第2755行并添加以下内容

echo “REAL: $realfilepath, ROOT: $rootdirpath”;

死前(对不起......)

这将在屏幕上打印哪一个是丢失的文件。

答案 9 :(得分:1)

有时这个错误是由一个不存在的模块引起的,我的意思是vtiger认为你有一个模块,但文件不在那里(可能是由于迁移到新服务器的错误)。

  • 禁用某些模块,然后重试,直到找到哪个模块坏了。

在我的情况下,破损的模块是VGS。

我希望有帮助

答案 10 :(得分:0)

我在vtiger 7.3上解决了这个问题。(也许它可以用于其他版本)

我在配置设置中获得了vtiger的用户许可,并使用相同的设置再次更新了tham。并将它们设置为更默认的设置..它们使所有用户重新出现,并且我可以创建新用户。再次输入密码。

我建议注销并可能强制刷新并稍等片刻使其生效。