我正在尝试在我的本地开发计算机上使用composer,并且在尝试从PHAR存档中复制内容时总是失败:
[ErrorException]
copy(): open_basedir restriction in effect. File(phar://E:/xampp/php/composer/composer.phar/src/Composer/Autoload/ClassLoader.php) is not within the allowed path(s)
open_basedir 指令中包含E:\ xampp \ php \ composer ,在该位置读取和写入文件工作正常,只访问PHAR存档中的文件不行。我尝试添加以下路径:
E:\xampp\php\composer\composer.phar\src\
phar://E:/xampp/php/composer/
phar://E:/xampp/php/composer/composer.phar/src/
phar://E:/xampp/php/composer/composer.phar/src/Composer/Autoload/
但没有任何帮助,它仍然失败并出现同样的错误。
是否有一种特殊的方式来包含PHAR档案的路径?有可能吗?它应该是必要的吗?这可能与此错误有关:https://bugs.php.net/bug.php?id=64634?
我的系统:Windows 7 x64,XAMPP 1.8.1,Apache 2.4.3,PHP 5.4.7
更新:尝试了最新稳定的PHP 5.4.14,同样的问题。
答案 0 :(得分:1)
我设法重现它,使用stream_copy_to_stream的解决方法似乎有效,所以我在566313834af3a49cd3f6b41001f7d8549e0b9c96中应用了它,如果你运行composer自我更新,它现在应该可以工作。
我不太确定作曲家的哪些其他部分可能受此影响,但如果您仍有类似问题,请随时在github上打开错误报告。