问题标签 [phar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 将 PHAR 存档标记为 PHP 可执行文件
我正在尝试将我的 PHAR 存档标记为 PHP(我不知道正确的术语),以便我可以从 cli 中使用它而无需任何php
部分。因此,php /path/to/my/archive.phar ARGUMENTS_HERE
我可以将它移到/usr/local/bin
并从任何地方调用它,而不是打电话archive
。(就像 PHPUnit 或 Composer 一样)。
如果我是对的,要做到这一点,我只需要#!/usr/bin/env php
在我的 PHAR 存档文件之上添加?
我怎么做?我试图在我的构建脚本中模仿作曲家编译器,但它只是使 PHP_CLI 崩溃(分段错误):
如您所见,我只需要存根即可运行/lib/app.php
文件,仅此而已。
预先编译的 PHAR
当然,我尝试的第一件事是将其手动添加到我的存档中,但它看起来会损坏它:
请注意,在我手动修改之前,完全相同的存档可以工作。(但php /path/to/arch
当然需要)
php - 如何以兼容的方式包含 PHP 文件以使用和不使用 Phar 进行打包?
给定一个具有以下结构的 PHP 应用程序:
我正在尝试使用相同的源库同时涵盖以下情况:
- No Phar:能够按原样使用应用程序,DocumentRoot指向web/并将所有请求重定向到index.php。
- Minimal Phar:能够生成仅包含web/index.php的 phar并将保存为:web/application-minimal.phar。
- Full Phar:能够生成包含lib目录和web/index.php内容的 phar ,并将保存为:web/application-full.phar。
对于 phar 文件,所有请求都将被重定向到 phar 文件本身。
是否可以在不必更改 *require_once* 的情况下实现所有这些用例?
我尝试了不同的方法(相对/绝对)来包含来自 *web/index.php" 的lib/mylib.php,以及尝试使用Phar::mount()的一些技巧。我的尝试都没有成功。
php - 如何更新使用 phar.cache_list 指令缓存的 phar?
我将我的 phar 添加到了cache_list指令中,php.ini
并且缓存效果很好。几天后我更新了 phar 现在我收到以下错误:
如果我注释掉该cache_list
指令,phar 可以正常工作并加载,但现在我无法再缓存它。这让我觉得 PHP 正在查看crc32
旧文件。
我已经尝试重新启动 apache 我不知道如何“刷新”缓存,或者这是否是问题所在。
php - 如何从 PHP 源代码中获取可执行的 phar 命令?
我希望能够使用本手册中phar
所述的命令行工具(在 Debian Linux 上)。
到目前为止我所做的:
将其移至
/usr/share/
;更改了
phar.php
from#!/usr/local/bin/php
to的第一行#!/usr/bin/php
(PHP 符号链接的路径 -> 到 PHP 可执行文件);创建了一个符号链接
phar
到/usr/share/phar/phar.php
.
现在phar help
返回一个错误:
我究竟做错了什么?如何让它工作?
谢谢
linux - 运行 make 时出错:缺少分隔符(您的意思是 TAB 而不是 8 个空格?)
我正在尝试phar
在我的 Debian VM 上安装 PHP 命令行工具,这里如何描述:
(1) 下载php-src,我假设它在/tmp/php/src
(2) 制作目录 /tmp/phar
(3) 另存为/tmp/php-src/ext/phar/Makefile 。
(4) cd /tmp/php-src/ext/phar
(5) 运行
sudo make
现在在第 5 步之后我得到一个错误:
据我所知,此错误消息可能有两个可能的原因:
make 文件中的选项卡。我已经用
od -t c Makefile
. 该文件不包含制表符 (\t
)。它可能是 v3.81 的错误,
make
需要补丁或升级到(但不稳定:“警告:此软件包来自实验发行版。 ”)v3.82。我已经下载并安装(dpkg -i make_3.82-1_amd64.deb
)它,但错误仍然存在。
是什么导致错误?如何避免?
谢谢
php - 密码库致命错误
我正在使用PasswordLib。我在 wamp 上运行我的项目,一切正常,但是当我将它上传到我的主机时,我收到了这个错误:
致命错误:未捕获的异常 'PharException' 带有消息 '__HALT_COMPILER(); 必须在 /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar:21 的 phar' 中声明 堆栈跟踪:#0 /data/web/virtuals/9784/virtual/www/ subdom/roids/_libs/PasswordLib.phar(21): Phar::mapPhar('PasswordLib.pha...') #1 /data/web/virtuals/9784/virtual/www/subdom/roids/index.php( 7): require_once('/data/web/virtu...') #2 {main} 在第 21 行的 /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar 中抛出
致命错误:未捕获的异常 'PharException' 带有消息 'phar "/data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar" SHA1 签名无法验证:/data/ 中的签名损坏web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar:21 堆栈跟踪:#0 /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar(21 ): Phar::mapPhar('PasswordLib.pha...') #1 /data/web/virtuals/9784/virtual/www/subdom/roids/index.php(7): require_once('/data/web/ virtu...') #2 {main} 在第 21 行抛出 /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar
你有什么想法可能是什么问题?
谢谢
php - 使用 phar 安装 aws php sdk
我正在尝试使用适用于 PHP 2 的 AWS 开发工具包在 S3 上创建文件。
通过 Phar 安装:
我将以下行添加到“/etc/php5/conf.d/suhosin.ini”:
我重新启动了 apache,并且 aws.phar 包含按预期工作。但是,在不进行任何更改的情况下,在进一步尝试时,服务器似乎没有发送响应,Chrome 显示“未收到数据”错误。
每次我重新启动 apache 它都会返回响应,但不会在后续加载时返回。
知道是什么原因造成的吗?
使用 Laravel、PHP 5.3.2 和 Ubuntu。
更新 无论有没有 suhosin.ini 编辑,似乎都会发生同样的事情。
即使服务器没有向 Web 浏览器返回响应,代码似乎也可以正常运行,因为它在 S3 上创建了一个文件。
php - 为简单的应用程序生成 PHAR
我正在尝试使用 Symfony2 控制台库构建 CLI 工具。我有一些基本的工作,现在我想把它打包成一个 phar。我已经阅读了一些示例,但我看到的示例非常简单(3 个文件,没有命名空间等)。
在我的src/
目录中,我有以下内容:
上面src/
我有一个console.php
我执行来运行应用程序。我也有一个vendors/
目录,因为我正在使用 composer 安装依赖项。console.php
很简单:
根据我对构建 phar 的了解(很少),我认为我需要将其console.php
作为存根和其他所有内容src/
以及我在vendors/
.
查看phpmaster.com上的示例代码,他们使用 手动指定要包含在 phar 中的每个文件file_get_contents
,但我需要维护我的目录结构以使用作曲家的自动加载器并保持 PSR-0 目录结构。
有没有一种简单的方法来创建 .phar 并在其中维护我的目录结构,以便我仍然可以使用 composer 的自动加载器?
php - 如何在像 xampp 这样的网络服务器上部署 phar 文件
我正在使用 maven 和 php 并将我的代码打包到 phar 存档并将其部署在 xampp 上。在java中,我们为应用服务器的webapp文件夹复制war文件,如tomcat。我如何在 php 中做到这一点?我只是去把 .phar 放在 xampp/htdocs 文件夹中吗?
谢谢