我正在尝试在我的NAS上使用composer(一个很好的旧D-Link DNS-23,运行非常好的fonz fun plug 0.7)。
我在/ffp/bin/php
中安装了php。
当我使用以下命令安装composer时
php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/ffp/sbin --filename=composer
但当我做一个简单的less /ffp/sbin/composer
时,我有以下shebang集:
#!/usr/bin/env php
<?php
/*
* This file is part of Composer.
*
不幸的是,我的NAS上没有/usr/bin/env
文件夹。。。那么,如何让composer引用正确的php可执行文件呢?
此外,我尝试将声明更改为使用#!/ffp/bin/php
,但在这样做时,任何composer运行都会返回以下结果:
PHP Warning: PHP Startup: Unable to load dynamic library '/ffp/lib/php/extensions/no-debug-non-zts-20100525/gd.so' - File not found in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/ffp/lib/php/extensions/no-debug-non-zts-20100525/gd.so' - File not found in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/ffp/lib/php/extensions/no-debug-non-zts-20100525/sqlite.so' - File not found in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/ffp/lib/php/extensions/no-debug-non-zts-20100525/sqlite.so' - File not found in Unknown on line 0
PHP Fatal error: Uncaught exception 'PharException' with message 'phar "/mnt/HD_a2/ffp/sbin/composer" has a broken signature' in /mnt/HD_a2/ffp/sbin/composer:23
Stack trace:
#0 /mnt/HD_a2/ffp/sbin/composer(23): Phar::mapPhar('composer.phar')
#1 {main}
thrown in /mnt/HD_a2/ffp/sbin/composer on line 23
Fatal error: Uncaught exception 'PharException' with message 'phar "/mnt/HD_a2/ffp/sbin/composer" has a broken signature' in /mnt/HD_a2/ffp/sbin/composer:23
Stack trace:
#0 /mnt/HD_a2/ffp/sbin/composer(23): Phar::mapPhar('composer.phar')
#1 {main}
thrown in /mnt/HD_a2/ffp/sbin/composer on line 23
特别重要的是线路
PHP Fatal error: Uncaught exception 'PharException' with message 'phar "/mnt/HD_a2/ffp/sbin/composer" has a broken signature' in /mnt/HD_a2/ffp/sbin/composer:23
我该怎么修?换句话说,如何在NAS上安装一个可工作的php+composer?
那么,如何让composer引用正确的php可执行文件呢?
一个非常简单的解决方案是创建一个shell脚本:
#!/bin/sh
/ffp/bin/php -n /ffp/sbin/composer "$@"
使其可执行,将其命名为composer
,将其放在/ffp/sbin
之前的路径中(或者将/ffp/sbin/composer
重命名为composer.phar
,并更新上面的脚本)。
-n
标志告诉PHP不要使用php.ini
。当从php.ini
加载了许多扩展时,这很有用;不加载它们使CCD_ 12运行得更快。特别是xdebug
建议而不是由composer
加载,以提高速度。