PHP:Class';Phar';找不到
我尝试使用Silex框架作为web应用程序的基础。但是,如果我尝试包含*.phar归档文件,PHP会抛出以下错误:PHP:Class';Phar';找不到,php,phar,Php,Phar,我尝试使用Silex框架作为web应用程序的基础。但是,如果我尝试包含*.phar归档文件,PHP会抛出以下错误: Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11 以下相关行位于我的/etc/php/php.ini(如Silex的文档中所建议的): PHAR库存在于/usr/lib/php/modules/PHAR.so中,它被设置为myphp.ini中所有库的扩展路径 有人知道PH
Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11
以下相关行位于我的/etc/php/php.ini
(如Silex的文档中所建议的):
PHAR库存在于/usr/lib/php/modules/PHAR.so
中,它被设置为myphp.ini中所有库的扩展路径
有人知道PHP抛出此错误的原因吗?请尝试指定:
php-d extension=phar.so composer.phar
其他选项:
根据您提供的信息,有几种可能性:
- 您使用的是不同的php.ini。检查
phpinfo()
的输出以确认,并确保您正在编辑激活的输出
- /usr/lib/php/modules/phar.so不可读。确保web服务器用户可以读取此文件
- 自上次将phar相关信息添加到php.ini后,您的web服务器尚未重新启动。重新启动Web服务器
Hm.我想你需要
require\u一次'phar://silex/silex.phar/autoload.php';代码>而不是要求一次'silex/silex.phar'代码>。如果不是这样,那么我们需要看到代码抛出错误。这对我很有用:
php -d extension=phar.so composer.phar [... your command ...]
这包括当前运行时的phar扩展。适用于共享/VPC服务器。在我的托管环境中,我需要指定php版本号。例如:
php-5.6 composer.phar
不是
php composer.phar希望这能给我们带来一些启示。我使用的是共享主机,无法运行composer。我正在使用这个网站来设置一个公共目录,并在其中安装composer。我遵循了它,但是我应该为我的别名添加以下命令到.bashrc
alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar'
这对我来说是个好办法。希望任何一个偶然发现这个的人都能点亮一个灯泡。对于Mageia 4、Mageia 5、Mageia 6用户
>> urpmi php-phar;echo done
To satisfy dependencies, the following packages are going to be installed:
Package Version Release Arch
(medium "Core Release2")
php-bz2 5.6.30 2.mga6 x86_64
php-phar 5.6.30 2.mga6 x86_64
326KB of additional disk space will be used.
151KB of packages will be retrieved.
Proceed with the installation of the 2 packages? (Y/n) y
$MIRRORLIST: media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm
$MIRRORLIST: media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm
installing php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm
Preparing... ###############################################
1/2: php-bz2 ###############################################
2/2: php-phar ###############################################
>>
>>urpmi-php-phar;回音完成
为了满足依赖关系,将安装以下软件包:
包版本发布拱门
(中等“核心版本2”)
php-bz2 5.6.30 2.mga6 x86_64
php phar 5.6.30 2.mga6 x86_64
将使用326KB的额外磁盘空间。
将检索151KB的包。
是否继续安装2个软件包?(是/否)是
$MIRRORLIST:media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm
$MIRRORLIST:media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm
安装php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm
准备###############################################
1/2:php-bz2###############################################
2/2:php phar###############################################
>>
在世纪
phar.so
包含在php公共
包中
phar
可执行文件包含在php-cli
包中
php-mbstring
和php-bz2
似乎也是必需的
当php-m | grep phar
不返回任何内容时,必须为CLI添加这些.ini
文件:
sudo cp/etc/php-zts.d/phar.ini/etc/php-cli.d/phar.ini
sudo cp/etc/php-zts.d/mbstring.ini/etc/php-cli.d/mbstring.ini
sudo cp/etc/php-zts.d/bz2.ini/etc/php-cli.d/bz2.ini
或者,可以添加与Web服务器使用相同的模块.ini
文件:
sudo cp/etc/php zts.d/*/etc/php cli.d/
应该是这样的:
$php--ini
配置文件(php.ini)路径:/etc
加载的配置文件:/etc/php.ini
在:/etc/php cli.d中扫描其他.ini文件/
解析的其他.ini文件:/etc/php-cli.d/bz2.ini,
/etc/php-cli.d/mbstring.ini,
/etc/php-cli.d/phar.ini
然后可以运行它:
$php./composer.phar
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
并将其移动到$PATH
下方:
sudo mv./composer.phar/usr/local/bin/composer
我通过安装phar解决了这个问题:
apt-get install php-phar
谢谢,我检查了你所有的建议。不幸的是,错误仍然存在。我将此标记为正确答案,因为您提供了一个很好的列表,列出了可能的原因。在我的例子中,Web服务器的配置方式是在读取php.ini时以静默方式失败。因此,在extension=phar.So
行上方的一些行中,我没有检测到错误。我从来没有听说过PHP在尝试读取PHP.ini时悄悄失败。你能详细说明原因和解决办法吗?是的,这对我来说也是新鲜事。如果我试图从控制台启动PHP脚本(例如PHP myscript.PHP
),则返回一个错误,即缺少另一个。因此文件。在注释完这一行之后,PHP可以成功地运行我的脚本(在CLI和浏览器中)。为什么需要关闭detect\u unicode
?
>> urpmi php-phar;echo done
To satisfy dependencies, the following packages are going to be installed:
Package Version Release Arch
(medium "Core Release2")
php-bz2 5.6.30 2.mga6 x86_64
php-phar 5.6.30 2.mga6 x86_64
326KB of additional disk space will be used.
151KB of packages will be retrieved.
Proceed with the installation of the 2 packages? (Y/n) y
$MIRRORLIST: media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm
$MIRRORLIST: media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm
installing php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm
Preparing... ###############################################
1/2: php-bz2 ###############################################
2/2: php-phar ###############################################
>>
apt-get install php-phar