diff --git a/src/Console/Php/PhpSettingsHandler.php b/src/Console/Php/PhpSettingsHandler.php
index 5179034d9..2e30d0034 100644
--- a/src/Console/Php/PhpSettingsHandler.php
+++ b/src/Console/Php/PhpSettingsHandler.php
@@ -15,6 +15,7 @@
 namespace KevinGH\Box\Console\Php;
 
 use Composer\XdebugHandler\XdebugHandler;
+use KevinGH\Box\Phar\PharPhpSettings;
 use Psr\Log\LoggerInterface;
 use Webmozart\Assert\Assert;
 use function getenv;
@@ -45,7 +46,7 @@ public function __construct(LoggerInterface $logger)
         $this->setLogger($logger);
         $this->logger = $logger;
 
-        $this->pharReadonly = '1' === ini_get('phar.readonly');
+        $this->pharReadonly = PharPhpSettings::isReadonly();
     }
 
     public function check(): void
@@ -78,7 +79,7 @@ protected function restart(array $command): void
 
     private function disablePharReadonly(): void
     {
-        if (ini_get('phar.readonly')) {
+        if (PharPhpSettings::isReadonly()) {
             Assert::notNull($this->tmpIni);
 
             append_to_file($this->tmpIni, 'phar.readonly=0'.PHP_EOL);
diff --git a/src/Phar/PharPhpSettings.php b/src/Phar/PharPhpSettings.php
new file mode 100644
index 000000000..7a581259c
--- /dev/null
+++ b/src/Phar/PharPhpSettings.php
@@ -0,0 +1,29 @@
+<?php
+
+declare(strict_types=1);
+
+/*
+ * This file is part of the box project.
+ *
+ * (c) Kevin Herrera <kevin@herrera.io>
+ *     Théo Fidry <theo.fidry@gmail.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace KevinGH\Box\Phar;
+
+use function ini_get;
+
+final class PharPhpSettings
+{
+    public static function isReadonly(): bool
+    {
+        return '1' === ini_get('phar.readonly');
+    }
+
+    private function __construct()
+    {
+    }
+}
diff --git a/src/Pharaoh/Pharaoh.php b/src/Pharaoh/Pharaoh.php
index 68bfa1b08..e6afd9512 100644
--- a/src/Pharaoh/Pharaoh.php
+++ b/src/Pharaoh/Pharaoh.php
@@ -44,12 +44,12 @@
 namespace KevinGH\Box\Pharaoh;
 
 use Error;
+use KevinGH\Box\Phar\PharPhpSettings;
 use KevinGH\Box\PharInfo\PharInfo;
 use ParagonIE\ConstantTime\Hex;
 use Phar;
 use function copy;
 use function file_put_contents;
-use function ini_get;
 use function is_dir;
 use function is_readable;
 use function is_string;
@@ -79,7 +79,7 @@ public function __construct(string $file, ?string $alias = null)
             throw new PharError($file.' cannot be read');
         }
 
-        if ('1' == ini_get('phar.readonly')) {
+        if (PharPhpSettings::isReadonly()) {
             // TODO: the value may be something else than '1'
             throw new PharError("Pharaoh cannot be used if phar.readonly is enabled in php.ini\n");
         }
diff --git a/src/Test/RequiresPharReadonlyOff.php b/src/Test/RequiresPharReadonlyOff.php
index ece84b256..7e78de14c 100644
--- a/src/Test/RequiresPharReadonlyOff.php
+++ b/src/Test/RequiresPharReadonlyOff.php
@@ -14,7 +14,7 @@
 
 namespace KevinGH\Box\Test;
 
-use function ini_get;
+use KevinGH\Box\Phar\PharPhpSettings;
 
 /**
  * @private
@@ -23,7 +23,7 @@ trait RequiresPharReadonlyOff
 {
     private function markAsSkippedIfPharReadonlyIsOn(): void
     {
-        if (true === (bool) ini_get('phar.readonly')) {
+        if (PharPhpSettings::isReadonly()) {
             $this->markTestSkipped(
                 'Requires phar.readonly to be set to 0. Either update your php.ini file or run this test with '
                 .'php -d phar.readonly=0.',