From 1b7016c10beb5d5ac81ebad7d5d2cc1645248ef9 Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud Date: Thu, 9 Mar 2023 14:48:38 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20Chemin=20de=20SPIP=20erron=C3=A9=20suite?= =?UTF-8?q?=20=C3=A0=20la=20pr=C3=A9c=C3=A9dente=20correction=E2=80=A6=20f?= =?UTF-8?q?iou?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- loader/src/Application.php | 5 +++-- loader/src/Config/Internal.php | 1 - loader/src/Spip.php | 25 +++++++++++++++---------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/loader/src/Application.php b/loader/src/Application.php index 8ffa514..1b7fa2c 100644 --- a/loader/src/Application.php +++ b/loader/src/Application.php @@ -62,8 +62,9 @@ class Application { $this->lang = $this->define_lang(); $this->versions = $this->define_downloadable_versions(); $this->spip = new Spip( - $this->config->get('url.root'), - $this->config->get('directory.public') . $this->config->get('directory.install'), + $this->config->get('url.root') . $this->config->get('directory.install'), + $this->config->get('directory.public') . '/' . $this->config->get('directory.install'), + $this->config->get('directory.install'), $this->config->get('phar.filename') ?: $this->config->get('app.filename') ); $this->page = new Template\Page( diff --git a/loader/src/Config/Internal.php b/loader/src/Config/Internal.php index c688cf0..4ed92f3 100644 --- a/loader/src/Config/Internal.php +++ b/loader/src/Config/Internal.php @@ -86,6 +86,5 @@ final class Internal extends AbstractConfig { $this->set('url.frontend', dirname($script_url) . '/'); # $this->set('url.root', dirname($script_url, \Phar::running(false) ? 2 : 1) . '/'); # php 7.0+ $this->set('url.root', (\Phar::running(false) ? dirname(dirname($script_url)) : dirname($script_url)) . '/'); - #dump($filepath, $script_filename, $script_url, $this->config); } } diff --git a/loader/src/Spip.php b/loader/src/Spip.php index 7ef1e5e..233ec71 100644 --- a/loader/src/Spip.php +++ b/loader/src/Spip.php @@ -8,22 +8,28 @@ class Spip { /** @var bool */ private $loaded = false; - /** @var string */ + /** @var string realpath of install directory */ + private $full_install_directory; + + /** @var string install directory relative to working directory */ private $install_directory; /** @var string */ - private $url_root; + private $url_install; /** @var string */ private $script_filename; /** * @param string $url_root + * @param string $url_install + * @param string $full_install_directory * @param string $install_directory * @param string $script_filename */ - public function __construct($url_root, $install_directory, $script_filename) { - $this->url_root = $url_root; + public function __construct($url_install, $full_install_directory, $install_directory, $script_filename) { + $this->url_install = $url_install; + $this->full_install_directory = $full_install_directory; $this->install_directory = $install_directory; $this->script_filename = $script_filename; } @@ -32,7 +38,7 @@ class Spip { * @return bool */ public function exists() { - return @file_exists($this->install_directory . self::BOOTSTRAP_SPIP_FILE); + return @file_exists($this->full_install_directory . self::BOOTSTRAP_SPIP_FILE); } /** @return string */ @@ -48,7 +54,7 @@ class Spip { if (!$this->exists()) { return ''; } - $file = $this->install_directory . self::BOOTSTRAP_SPIP_FILE; + $file = $this->full_install_directory . self::BOOTSTRAP_SPIP_FILE; if (!is_readable($file)) { throw new \Exception(sprintf('Can’t read %s to extract version', $file)); } @@ -80,7 +86,7 @@ class Spip { $this->loaded = true; if (self::exists()) { $pwd = getcwd(); - chdir($this->install_directory); + chdir($this->full_install_directory); include_once self::BOOTSTRAP_SPIP_FILE; chdir($pwd); } @@ -120,16 +126,15 @@ class Spip { * @return void */ public function askForLogin() { - $base_url = $this->url_root . $this->install_directory; $return = str_repeat('../', $this->countDirectories($this->install_directory)); $redirect_self = $return . $this->script_filename; $pwd = getcwd(); - chdir($this->install_directory); + chdir($this->full_install_directory); include_spip('inc/headers'); include_spip('inc/minipres'); http_response_code(403); - echo str_replace('', '', install_debut_html(_T('info_acces_interdit'))); + echo str_replace('', '', install_debut_html(_T('info_acces_interdit'))); echo "
\n"; echo _T('ecrire:avis_non_acces_page'); echo '
' . _T('public:lien_connecter') . '';