标签: phar

'php pyrus.phar'不会被执行

我在Debian上使用PHP 5.3并根据php -m'Phar'加载.

但是执行php pyrus.pharphp pyrus.phar config-show导致根本没有输出.

可能是什么问题?

debian:~# php -v
PHP 5.3.5-1 with Suhosin-Patch (cli) (built: Feb 19 2011 01:57:59)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
Run Code Online (Sandbox Code Playgroud)

php -i 给我:

[...]

Phar

Phar: PHP Archive support => enabled
Phar EXT version => 2.0.1
Phar API version => 1.1.1 …
Run Code Online (Sandbox Code Playgroud)

php pear suhosin phar pyrus

12
推荐指数
1
解决办法
4332
查看次数

如何从Phar存档访问外部文件?

我需要将配置文件放在我的Web应用程序的phar之外.我需要安装它.在我的存根文件中,我试过:

<?php
try {
    Phar::mount('sites/site.php', __DIR__.'/../sites/site.php');
} catch (PharException $e) {
    print_r($e);
};
Phar::mapPhar();
include '../app.phar';
Run Code Online (Sandbox Code Playgroud)

但是,我收到了" Mounting of sites/site.php to D:\(...)\public/../sites/site.php failed"错误消息.我尝试了各种文件路径样式,没有任何成功.这有什么问题?

我使用box2来ubild phar文件.构建phar文件需要很长时间.有没有办法让它更快?

错误消息也很模糊.有什么办法可以获得更好的信息

php phar

12
推荐指数
1
解决办法
862
查看次数

无法启用phar写入

我实际上在PHP 5.5.12中使用wamp 2.5,当我尝试创建一个phar文件时,它返回以下消息:

未捕获的异常'UnexpectedValueException',消息'创建存档'..."由php.ini设置禁用phar.readonly'

即使我关闭了php.ini中phar.readonly选项.

那么如何启用phar文件的创建呢?

phar php-ini

10
推荐指数
2
解决办法
5603
查看次数

如何正确创建,然后需要PHAR文件?

我目前正在尝试打包库代码,然后将其发送给实际尝试使用该库代码的人.创建PHAR文件后,我正在尝试使用简单的测试脚本验证它是否已正确完成.在create-PHAR - > use-PHAR进程的某个时刻,我做错了什么.

如何正确创建,然后需要PHAR文件?

为了使PHAR的制作和验证变得简单,我将所有内容限制为问题的简化版本,但仍然无法继续.

这是我的文件:

~/phar-creation-and-require-test/
    mylibrary.php
    testoflibrary.php
    make-phar.php
    make-phar.sh
    mylibrary.phar (after being created)
Run Code Online (Sandbox Code Playgroud)

mylibrary.php 内容:

<?
class FooClass {
    private $foonum;

    function FooClass() {
        $this->foonum = 42;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

make-phar.php 内容:

<?php
if ($argc < 3) {
    print 'You must specify files to package!';
    exit(1);
}
$output_file = $argv[1];
$project_path = './';
$input_files = array_slice($argv, 2);

$phar = new Phar($output_file);
foreach ($input_files as &$input_file) {
    $phar->addFile($project_path, $input_file);
}

$phar->setDefaultStub('mylibrary.php');
Run Code Online (Sandbox Code Playgroud)

这叫做make-phar.sh:

#!/usr/bin/env bash …
Run Code Online (Sandbox Code Playgroud)

php phar

9
推荐指数
1
解决办法
679
查看次数

包含多个phar文件时出现Php5-FPM错误

我们在服务器上使用Ubuntu + nginx + php5-fpm组合,PHP版本为5.5.我们正在尝试运行index.php,其中包含一堆phar文件.就像是:

<?php
include "a.phar";
include "b.phar";
//...
?>
Run Code Online (Sandbox Code Playgroud)

当从命令行PHP运行此脚本时,它工作正常.当从php开发服务器(php -S)或从nginx运行时,我们收到以下错误:

2013/11/18 17:56:06 [error] 14384#0: *597 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Cannot redeclare class Extract_Phar in b.phar on line 103
Run Code Online (Sandbox Code Playgroud)

我没有一个名为Extract_Phar的类 - 所以我假设我的构建过程正在将它添加到某个地方.我使用phing来构建相同的,以防万一.目标是:

<target name="phar" depends="prepare">
  <pharpackage destfile="./build/phar/LogUtils.phar" 
  basedir="./build/intophar"
  compression="bzip2">
  <fileset dir="./build/intophar/">
    <include name="*.*" />
    <include name="**/**" />
  </fileset>
  <metadata>
    <element name="version" value="1.0" />
    <element name="authors">
       <element name="Shreeni">
         <element name="e-mail" value="test@test.com" />
       </element>
    </element>
  </metadata>
  </pharpackage>
</target>
Run Code Online (Sandbox Code Playgroud)

而我的intophar文件夹中的index.php是这样的:

include("api/LogUtils.inc.php");
// Other relative include …
Run Code Online (Sandbox Code Playgroud)

php phing nginx phar

8
推荐指数
1
解决办法
627
查看次数

如何在Windows中安装依赖项或使用composer

我已经通过windows安装程序安装了composer,并为php设置了正确的路径变量来创建php,现在我创建了一个composer.json(以及后来的.phar)文件

并尝试安装那里列出的依赖项

{
"name": "phpunit/php-unit",
"require": {
    "php": ">5.4.12",
    "phpunit/phpunit": "3.7.28"
}
}
Run Code Online (Sandbox Code Playgroud)

这几乎是每一个命令都有的,包括

php composer.phar install
php composer.json install
Run Code Online (Sandbox Code Playgroud)

我确实在Windows cmd中运行了这个,所以我不确定这是否会影响任何事情.

php phar composer-php

8
推荐指数
2
解决办法
2万
查看次数

在共享空间上使用Composer PHP

谢天谢地,我正在使用Bluehost并且可以访问SSH.我还在控制面板设置中将PHP设置为5.4.现在,这里有两个我无法理解的大问题:如何安装Composer,此外,在安装Composer之后,如何获得依赖项?

在这种情况下,我试图使用官方的Tumblr PHP库,它具有依赖关系 - 所有这些都可以在Packagist找到.

我已经提到了OP正在使用HostGator的这个问题.我试图以类似的方式安装Composer,并且看似成功的结果.然而,问题是我不知道在Bluehost上安装它的位置所以我现在已经在服务器上的几个随机位置安装了Composer,因为我不知道如何导航以找到将它放在此共享的位置空间.

我知道这是问题(即它安装在错误的位置),因为当我使用composer phar文件和语法来安装软件包时,我会收到错误,说这些命令不存在.

我真的很讨厌要求提供帮助,但是如果有人可以指导我在共享空间上正确安装Composer并在同一个共享空间上正确安装Packagist的Composer软件包,那将非常感激.我已经挖掘了Composer文档,似乎无法找到适当的指南 - 如果一个甚至可以存在 - 对于这种情况.在这一点上,我想知道每个网络主机是否会有所不同.

php tumblr phar composer-php

8
推荐指数
2
解决办法
2429
查看次数

在Windows 7中安装Laravel 4.1 //将.phar文件全局提供给Windows命令行

我通过Laravel文档(http://laravel.com/docs/installation#install-laravel)中解释的第一种方法在Windows 7中安装Laravel 4.1时遇到一些问题.

所以我下载了laravel.phar文件并将其放在我的路径中(System32).哪个在基于linux的系统中等同于/ usr/bin?

(我还在PATHEXT系统变量中添加了.PHAR).

当我从命令行运行laravel命令时,它不知道如何打开它,所以我选择用php.exe打开它.现在,当我运行composer命令时,它说:"无法打开输入文件:C:\ Windows\system32\laravel.phar".

我认为这不是laravel本身的问题,而是我对Windows命令行的有限知识.通过composer安装工作正常.

任何帮助表示赞赏.


重新说明并澄清这个问题:如何在Windows命令行中全局使用.phar文件?

php command-line windows-7 phar laravel-4

8
推荐指数
2
解决办法
2万
查看次数

为什么aws.phar运行一次然后不会再次加载?

我在使用phar文件的弹性beanstalk应用程序中为php安装了aws sdk:

require_once __DIR__ . '/../AWS-SDK/aws.phar';
Run Code Online (Sandbox Code Playgroud)

当我第一次运行脚本时,它成功了!但是当我再试一次时,我收到了这个错误:

Warning: require(phar://aws.phar/aws-autoloader.php): failed to open stream: phar error: invalid url or non-existent phar "phar://aws.phar/aws-autoloader.php" in /var/app/current/src/utils/AWS-SDK/aws.phar on line 3 Fatal error: require(): Failed opening required 'phar://aws.phar/aws-autoloader.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/app/current/src/utils/AWS-SDK/aws.phar on line 3
Run Code Online (Sandbox Code Playgroud)

如何解决问题?

php amazon-web-services phar aws-php-sdk amazon-elastic-beanstalk

8
推荐指数
2
解决办法
2463
查看次数

进程派生期间 PHAR 内部损坏(crc32 不匹配)

我是ko-worker库的开发。我添加了 phar 可执行文件作为守护程序应用程序的功能。并发现 phar 和进程分叉 undex linux 的奇怪行为。每次主进程分叉超过 1 个孩子时,我都会遇到这样的错误

include(phar:///opt/www/worker.phar/vendor/path/to/file.php): 
failed to open stream: phar error: internal corruption of phar    

"/opt/www/worker.phar" (crc32 mismatch on file "vendor/path/to/file.php")
in `phar:///opt/www/worker.phar/vendor/composer/ClassLoader.php` line 412
Run Code Online (Sandbox Code Playgroud)

phar的存根(这里原始存根)看起来像

#!/usr/bin/env php
<?php
     Phar::mapPhar('worker.phar');
     require_once 'phar://worker.phar/vendor/autoload.php';

     //Execute next going fork code more then one 1 time
     ...
     $pid = pcntl_fork();
     if ($pid == -1) {
         die('could not fork');
     } else if ($pid) {
        // we are the parent
        ...
     } …
Run Code Online (Sandbox Code Playgroud)

php linux fork phar

8
推荐指数
1
解决办法
719
查看次数