Phar archive 没有 symfony 文件系统的读写权限
Phar archive no read and write permissions with symfony filesystem
我已经创建了一个 cli 应用程序,它试图用 symfony 3 文件系统组件创建一个文件。一切正常,但如果我将应用程序放入 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 存档在 IO 操作方面存在问题。但我不明白问题出在哪里。在我的php.ini中配置的是phar.readonly=Off。
希望有人能给我提示。 :)
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'
);
我已经创建了一个 cli 应用程序,它试图用 symfony 3 文件系统组件创建一个文件。一切正常,但如果我将应用程序放入 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 存档在 IO 操作方面存在问题。但我不明白问题出在哪里。在我的php.ini中配置的是phar.readonly=Off。
希望有人能给我提示。 :)
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'
);