我做了一个简单的WHMCS添加,它使用了WHMCS中的钩子函数。
如果我使用require_once (ROOTDIR.'/modules/addons/module_name/modulefunction.php')
,它在我的安装上工作正常,因为我的WHMCS使用子域。但是我在另一个没有使用子域的安装上测试了它,但它不起作用,因为WHMCS目录不包含在名称中。
有没有办法让我获取目录的名称,或者只是从hooks文件夹(includes/hooks/my_hook.php
)向后移动到addons目录。
我尝试使用require_once '../../../modules/addons/module_name/modulefunction.php';
,但它只是说无法找到该文件。
错误:
Fatal error: require_once(): Failed opening required '../../../modules/addons/module_name/modulefunction.php' (include_path='/home/me/public_html/hosting/vendor/phpseclib/phpseclib/phpseclib:.:/usr/lib/php:/usr/local/lib/php:/usr/local/php/') in /home/me/public_html/hosting/includes/hooks/my_hook.php on line 55
任何帮助都会很棒:)。 谢谢。
答案 0 :(得分:0)
从includes / hooks文件夹中,你不能这样做:
require_once dirname( dirname( __DIR__ ) ) . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . 'addons' . DIRECTORY_SEPARATOR . 'module_name' . DIRECTORY_SEPARATOR . 'modulefunction.php';
我相信无论你的安装如何,DIR上的双重名称都会让你进入根目录。
答案 1 :(得分:0)
发布此帖子,因为我在任何地方都找不到答案。
我想对WHMCS插件进行完整性检查,以确保安装了其他文件,因此我执行了以下代码,并且运行正常。
我在加载模块中的任何其他文件之前先加载了此文件,因此与模块相关的其他任何内容的相关性均为零。
此代码位于{whmcs–dir} /modules/servers/mailtrust.php
因此,一旦我转到模块中的任何页面,它就会确保已安装所有必需的文件,并且如果没有抛出友好错误,则将确保该错误。
$ path_to_includes将为您提供当前WHMCS安装中您的模块的安装目录。
$path_to_includes = dirname( dirname( __DIR__ ) );
$path_to_includes = str_replace("modules","includes", $path_to_includes);
$path_to_includes = $path_to_includes . "/hooks/mailtrust.php";
if(!file_exists($path_to_includes)) {
echo "<h1>ERROR - System File Missing</h1>";
echo "Please upload the mailtrust hook file to $path_to_includes";
exit;
}