又是我。我遇到了另一个问题:/我有一个安装应用程序的脚本。一切都很好,安装完成后,脚本会将目录权限重置为600,因此无法重新安装应用程序。我还想这样做,当有一个安装程序文件夹,它没有600权限时,它会把我带到安装页面。我无法对此作出其他解释。
以下是重定向到安装页面的代码:
if(is_dir('../../install/') && substr(decoct(fileperms('../../install/')), -4) !== 600) {
$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$base_url .= "://" . $_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
$base_url = str_replace('admin/auth', '', $base_url);
sleep(1);
header('Location:' . $base_url . '/install');
}
我把这段代码添加到了index.php的顶部,但它不起作用。就好像它最后加载,就好像有什么东西先加载。因为如果没有数据库集,它会抛出一个无法连接的错误,并且只有在安装后才能设置这些错误。如果有一个包含安装程序文件的目录,但没有chmod 600,我如何强制转移到安装页面?
提前感谢您的帮助;(向致以最良好的问候
您应该扩展CI_Controller
MY_Controller类扩展了CI_Controller
注意MY_是大写的。确保此文件保存为application/core/MY_Controller.php,再次注意此情况。
然后将该代码放入MY_Controller 的__constructor
问题已解决。我将下面的代码添加到了index.php
if(is_dir('install/') && substr(decoct(fileperms('install/')), -4) !== 600) {
$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$base_url .= "://" . $_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
$base_url = str_replace('admin/auth', '', $base_url);
die('Instalator wykryty. Proszę przejść do <a href="' . $base_url . 'install">instalacji sklepu</a>');
}