В архиве Phar нет прав на чтение и запись с файловой системой Symfony

я создал приложение cli, которое пытается создать файл с компонентом symfony 3 fileSystem. Все работает нормально, но если я положу приложение в архив phar, symfony не сможет записать файл.

Вот как я создал архив phar:

<?php
$phar = new Phar('app.phar', 0, 'app.phar');
$phar->buildFromDirectory(dirname(__FILE__) );
$phar->setStub($phar->createDefaultStub('app.php'));

App.php вызывает компонент файловой системы symfony:

<?php

....

$this->fileSystem->dumpFile(
'testfile.txt',
'my test content'
);

Это работает нормально, если я выполняю app.php напрямую. Но если я выполню его как .phar, я получу это сообщение.

[Symfony\Component\Filesystem\Exception\IOException]
Failed to create ".": mkdir(): File exists.

Другие операции, такие как echo работает нормально.
Я думаю, что в архиве phar есть проблемы с операциями ввода-вывода. Но я не понимаю, в чем проблема. В моем php.ini настроен phar.readonly = Off.

Я надеюсь, что кто-то может дать мне подсказку. 🙂

0

Решение

Phar имеет другую структуру пути, и этот метод Symfony делает dirname($filename); https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Filesystem/Filesystem.php#L679

Попробуйте определить полный путь.

$path = '.';
if (!empty($pharPath = \Phar::running(false))) {
$path = dirname($pharPath);
}

$this->fileSystem->dumpFile(
$path.'/testfile.txt',
'my test content'
);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]