我在Debian上使用PHP 5.3并根据php -m'Phar'加载.
但是执行php pyrus.phar或php 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) 我需要将配置文件放在我的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 5.5.12中使用wamp 2.5,当我尝试创建一个phar文件时,它返回以下消息:
未捕获的异常'UnexpectedValueException',消息'创建存档'..."由php.ini设置禁用phar.readonly'
即使我关闭了php.ini中的phar.readonly选项.
那么如何启用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) 我们在服务器上使用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) 我已经通过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中运行了这个,所以我不确定这是否会影响任何事情.
谢天谢地,我正在使用Bluehost并且可以访问SSH.我还在控制面板设置中将PHP设置为5.4.现在,这里有两个我无法理解的大问题:如何安装Composer,此外,在安装Composer之后,如何获得依赖项?
在这种情况下,我试图使用官方的Tumblr PHP库,它具有依赖关系 - 所有这些都可以在Packagist上找到.
我已经提到了OP正在使用HostGator的这个问题.我试图以类似的方式安装Composer,并且看似成功的结果.然而,问题是我不知道在Bluehost上安装它的位置所以我现在已经在服务器上的几个随机位置安装了Composer,因为我不知道如何导航以找到将它放在此共享的位置空间.
我知道这是问题(即它安装在错误的位置),因为当我使用composer phar文件和语法来安装软件包时,我会收到错误,说这些命令不存在.
我真的很讨厌要求提供帮助,但是如果有人可以指导我在共享空间上正确安装Composer并在同一个共享空间上正确安装Packagist的Composer软件包,那将非常感激.我已经挖掘了Composer文档,似乎无法找到适当的指南 - 如果一个甚至可以存在 - 对于这种情况.在这一点上,我想知道每个网络主机是否会有所不同.
我通过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文件?
我在使用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
我是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)
#!/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)