ich eine schlanke Anwendung mit der folgenden Verzeichnisstruktur haben:Fehler Verpackung in eine Phar eine ganze Schlanke Anwendungsdatei
app/
vendor/
www/
config.php
In app/I die entsprechenden Dateien des Projekts haben, in Verkäufer/die Abhängigkeiten verwaltet von Komponist und im www/die vom Webserver zugänglichen Dateien. erstelle ich also die phar auf diese Weise
<?php
$full_path = '/home/.../forms/';
$package_name = 'www/package.phar';
try {
$phar = new Phar($full_path . $package_name,
FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $full_path . $package_name);
$phar->startBuffering();
$phar->addFile($full_path . 'www/index.php');
$phar->addFile($full_path . 'www/bootstrap.php');
$phar->addFile($full_path . 'www/session_start.php');
// Grab config
$phar->addFile($full_path . 'config.php');
$phar->buildFromIterator(new RecursiveIteratorIterator (new RecursiveDirectoryIterator('../app', FilesystemIterator::SKIP_DOTS)),'../app');
$phar->buildFromIterator(new RecursiveIteratorIterator (new RecursiveDirectoryIterator('../vendor', FilesystemIterator::SKIP_DOTS)),'../vendor');
$phar->setDefaultStub('bootstrap.php', 'bootstrap.php');
$phar->stopBuffering();
echo "Phar created.";
} catch (Exception $e) {
// handle errors here
echo $e->getMessage();
}
und ich habe dann:
Also ich denke nach dem Vorbild der eine Phar-Datei erstellen
deploy.php
<?php
require_once 'phar://package.phar/bootstrap.php';
$app->run();
Aber wenn ich /deploy.php erhalte bekomme ich:
[Fri May 15 20:07:02 2015] [error] [client 10.0.2.2] PHP Warning: require_once(phar://package.phar/bootstrap.php) [function.require-once]: failed to open stream: Cannot open archive "/vagrant/www/package.phar", invalid alias in /vagrant/www/deploy.php on line 3 [Fri May 15 20:07:02 2015] [error] [client 10.0.2.2] PHP Fatal error: require_once() [function.require]: Failed opening required 'phar://package.phar/bootstrap.php' (include_path='.:/usr/share/php:/usr/share/pear') in /vagrant/www/deploy.php on line 3
Glaubst du, ich sollte es so ansprechen?
Dank
Hallo, Set 'phar.require_hash = Off, aber immer noch geben Sie mir den gleichen Fehler –
Nun, können Sie die lokalen Namen in [http://php.net/manual explizit /en/pharod.addfile.php] (addFile()) –
Meinst du damit etwas? '$ phar-> addFile ($ full_path. 'www/index.php', 'www/index.php'); '..., das gemacht, das phar neu erstellt und immer noch nicht in der Lage, es einzuschließen, den' ungültigen alias' Fehler zu erhalten, wenn es 'include 'phar tut : //package.phar/www/bootstrap.php '; ' –