Php 将整个Slim应用程序打包到Phar文件时出错
我有一个具有以下目录结构的Slim应用程序:Php 将整个Slim应用程序打包到Phar文件时出错,php,slim,phar,Php,Slim,Phar,我有一个具有以下目录结构的Slim应用程序: app/ vendor/ www/ config.php 在app/I中有项目的相关文件,在composer管理的供应商/依赖项中,在www/web服务器可访问的文件中 因此,我想创建一个Phar文件,大致如下: <?php $full_path = '/home/.../forms/'; $package_name = 'www/package.phar'; try { $phar = new Phar($full_path
app/
vendor/
www/
config.php
在app/I中有项目的相关文件,在composer管理的供应商/依赖项中,在www/web服务器可访问的文件中
因此,我想创建一个Phar文件,大致如下:
<?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();
}
编辑:
在流浪者盒子的共享文件夹中创建phar导致了该问题。一旦我将“output”属性更改为共享文件夹之外的位置,错误就消失了
您应该检查php.ini:
phar.require\u hash=Off
或者在你的Phar上签字
或与Phing一起:
..
嗨,Setphar.require\u hash=Off
但仍然给我同样的错误那么,你能在[你的意思是这样吗?:$phar->addFile($full_path.'www/index.php','www/index.php')中显式显示本地名称吗
…,完成此操作后,重建了phar,但仍然无法包含它,执行以下操作时出现无效别名
错误:包含'phar://package.phar/www/bootstrap.php“;
我现在正在用Phing做这件事,所以似乎错误在于Phar生成的旧方法已损坏,Phing抛出了我:构建失败/vagrant/build.xml:16:9:创建包时出现问题:无法将旧phar的存根复制到新phar“/vagrant/www/package.phar”[wrapped:cannot copy stub of old phar to new phar”/vagrant/www/package.phar”]
有任何提示吗?谢谢!我发现:“在vagrant box的共享文件夹中创建phar导致了这个问题。一旦我更改了”输出“属性到共享文件夹外的某个位置时,错误消失。”来源:
<?php
require_once 'phar://package.phar/bootstrap.php';
$app->run();