2017-12-28 1 views
0

Ich habe eine CLI-App erstellt, die versucht, eine Datei mit Symfony 3 FileSystem-Komponente zu erstellen. Alles funktioniert gut, aber wenn ich die App in ein Phar-Archiv einlege, kann Symfony die Datei nicht schreiben. DiesePhar Archiv keine Lese-und Schreibrechte mit Symfony-Dateisystem

ist, wie ich die Phar-Archiv erstellt:

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

Die symfony-Dateisystem-Komponente app.php zu nennen:

<?php 

.... 

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

Dies funktioniert gut, wenn ich direkt ausführen app.php. Aber wenn ich es als .phar ausführe, bekomme ich diese Nachricht.

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

Andere Operationen wie echo funktioniert gut. Meiner Meinung nach denke ich, dass das Phar-Archiv ein Problem mit IO-Operationen hat. Aber ich verstehe nicht, was das Problem ist. In meiner php.ini ist phar.readonly = Aus konfiguriert.

Ich hoffe, jemand kann mir einen Hinweis geben. :)

Antwort

2

Phar die haben einen anderen Weg Struktur, und das symfony Methode macht dirname($filename);https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Filesystem/Filesystem.php#L679

Versuchen Sie den vollständigen Pfad zu definieren.

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

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

Vielen Dank. Ok, jetzt verstehe ich. Das funktioniert gut. – freesh