我有一个具有以下目录结构的Slim应用程序:
app/
vendor/
www/
config.php
在app /我有项目的相关文件,在供应商/由作曲家管理的依赖项和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();
}
所以我创造了那种方式,然后我有:
deploy.php
<?php
require_once 'phar://package.phar/bootstrap.php';
$app->run();
但是在访问/deploy.php时我得到了:
[5月15日星期五20:07:02] [错误] [客户端10.0.2.2] PHP警告: require_once(phar://package.phar/bootstrap.php)[function.require-once]:失败了 开放流:无法打开存档 “/vagrant/www/package.phar”,无效的别名 /vagrant/www/deploy.php第3行[2015年5月15日星期五20:07:02] [错误] [client 10.0.2.2] PHP致命错误:require_once()[function.require]:需要打开失败 '药业://package.phar/bootstrap.php' (include_path ='。:/ usr / share / php:/ usr / share / pear')in 第3行/vagrant/www/deploy.php
你认为我应该像这样解决它吗?
由于
答案 0 :(得分:2)
编辑:
&#34;在Vagrant框的共享文件夹中创建phar会导致该问题。一旦我改变了#34;输出&#34;属性到共享文件夹之外的位置,错误就消失了。&#34; source
你应该检查你的php.ini:
id = ligne.substring(ligne.lastIndexOf(':') + 1);
或者与Phing:
phar.require_hash = Off