我尝试使用Silex框架作为我的Web应用程序的基础。但是,如果我尝试包含* .phar存档,PHP会抛出以下错误:
Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11
我的/etc/php/php.ini
中有以下相关行(如Silex文档中所述):
extension=phar.so
phar.readonly = Off
phar.require_hash = Off
detect_unicode = Off
PHAR库位于/usr/lib/php/modules/phar.so
中,被设置为php.ini
有谁知道为什么PHP会抛出此错误?
答案 0 :(得分:18)
这对我有用:
php -d extension=phar.so composer.phar [... your command ...]
这包括当前运行时的phar扩展。适用于共享/ VPC服务器。
答案 1 :(得分:16)
php -d extension=phar.so composer.phar <your_script>
其他选项:
根据您提供的信息,有几种可能性:
您正在使用不同的php.ini。检查phpinfo()
的输出以确认,并确保您正在编辑活动的输出。
/usr/lib/php/modules/phar.so不可读。确保Web服务器用户可以读取此文件。
自上次将与phar相关的信息添加到php.ini以来,您的Web服务器尚未重新启动。重新启动您的网络服务器。
答案 2 :(得分:0)
嗯。我认为您需要require_once 'phar://silex/silex.phar/autoload.php';
而不是require_once 'silex/silex.phar';
。如果不是这种情况,那么我们需要看到代码抛出错误。
答案 3 :(得分:0)
希望这可能会有所启发。我使用共享主机并且无法让作曲家运行。我正在使用此站点方向http://avantidevelopment.com/install-composer-on-bluehost/来设置公共目录并在其中安装composer。我跟着它,但是为了我的别名,我添加了以下命令到.bashrc
alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar'
这对我有用。希望无论谁发现这个都会引发一个灯泡。
答案 4 :(得分:0)
对于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 ############################################### >>
答案 5 :(得分:0)
在CentOS上...
phar.so
包含在php-common
软件包中。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
或者,可以添加与网络服务器相同的模块.ini
文件:
sudo cp /etc/php-zts.d/* /etc/php-cli.d/
它看起来应该像这样:
$ php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php-cli.d/
Additional .ini files parsed: /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
答案 6 :(得分:0)
对我唯一有效的方法是使用root特权运行php脚本
即使任何人都已经可以访问相关文件。...
id name
---|-----|
1 | abc |
2 | abc |
3 | def |
4 | def |
5 | def |
6 | abc |
7 | abc |
8 | def |
答案 7 :(得分:0)
我通过安装 phar 解决了:
apt-get install php-phar