Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将整个Slim应用程序打包到Phar文件时出错_Php_Slim_Phar - Fatal编程技术网

Php 将整个Slim应用程序打包到Phar文件时出错

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

我有一个具有以下目录结构的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 . $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一起:
..

嗨,Set
phar.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();