Phar存档没有symfony文件系统的读写权限

时间:2017-12-28 23:14:31

标签: php symfony phar symfony-filesystem

我创建了一个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存档存在IO操作问题。但我不知道这个问题是什么。在我的php.ini中是phar.readonly = Off configured。

我希望有人可以给我一个提示。 :)

1 个答案:

答案 0 :(得分:2)

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'
);