PHP+;梨|梨+;邮寄;邮筒';找不到Pear.php

PHP+;梨|梨+;邮寄;邮筒';找不到Pear.php,php,email,pear,pyrus,Php,Email,Pear,Pyrus,这几周来我一直在忙这个。我发现很多人都有类似的问题,并且在解决我的问题方面取得了一些进展,但不是一路走来 WAMPServer2.5(PHP5.5.12) 我最初安装了Pear,但有些地方出了问题(配置中的路径太疯狂了?),所以我再次尝试安装,然后事情变得非常糟糕,所以我删除了所有与Pear相关的东西(除了Pear子目录,因为Windows抱怨其中的一个文件正在使用,即使它是空的),并给了Pyrus一个机会。现在,至少在包管理方面,事情似乎进展得更好 我相信我的include_路径设置正确,因为

这几周来我一直在忙这个。我发现很多人都有类似的问题,并且在解决我的问题方面取得了一些进展,但不是一路走来

WAMPServer2.5(PHP5.5.12)

我最初安装了Pear,但有些地方出了问题(配置中的路径太疯狂了?),所以我再次尝试安装,然后事情变得非常糟糕,所以我删除了所有与Pear相关的东西(除了Pear子目录,因为Windows抱怨其中的一个文件正在使用,即使它是空的),并给了Pyrus一个机会。现在,至少在包管理方面,事情似乎进展得更好

我相信我的include_路径设置正确,因为现在我的脚本至少可以找到Mail.php脚本

include_path = ".;C:\wamp\bin\php\php5.5.12\pear\php"
我的电话,工作:

include_once("Mail.php");
但是,Mail.php现在抱怨找不到Pear.php:

无法在第46行的C:\wamp\bin\php\php5.5.12\PEAR\php\Mail.php中打开所需的“PEAR.php”(include_path=”;C:\wamp\bin\php\php5.5.12\PEAR\php)

\php5.5.12下没有Pear.php文件

发生这种情况是因为我使用的是Pyrus,而邮件被设置为在Pear环境中工作吗?(尽管Pyrus声称“使用C:\wamp\bin\php\php5.5.12\PEAR上的PEAR安装”,请参见下文)我必须同时安装PEAR和Pyrus吗?我应该使用pyrus.phar安装Pear吗?如上所述,以前安装Pear的尝试并不成功。Pear和Pyrus的文档可以通过一个图形来改进,该图形描述了标准安装在subdir等方面的外观。这就是我的include_path分支现在的外观:

c:\wamp\bin\php\php5.5.12\pear\php>tree /f
Folder PATH listing for volume OS
Volume serial number is A4D7-1271
C:.
│   Mail.php
│
├───Auth
│   │   SASL.php
│   │
│   └───SASL
│           Anonymous.php
│           Common.php
│           CramMD5.php
│           DigestMD5.php
│           External.php
│           Login.php
│           Plain.php
│           SCRAM.php
│
├───Mail
│       mail.php
│       mock.php
│       null.php
│       RFC822.php
│       sendmail.php
│       smtp.php
│       smtpmx.php
│
└───Net
        SMTP.php
        Socket.php
这是我的Pyrus配置:

c:\wamp\bin\php\php5.5.12>php pyrus.phar get
Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52
Using PEAR installation found at C:\wamp\bin\php\php5.5.12\pear
System paths:
  php_dir => C:\wamp\bin\php\php5.5.12\pear\php
  ext_dir => c:\wamp\bin\php\php5.5.12\ext\
  cfg_dir => C:\wamp\bin\php\php5.5.12\pear\cfg
  doc_dir => C:\wamp\bin\php\php5.5.12\pear\docs
  bin_dir => C:\wamp\bin\php\php5.5.12
  data_dir => C:\wamp\bin\php\php5.5.12\pear\data
  www_dir => C:\wamp\bin\php\php5.5.12\pear\www
  test_dir => C:\wamp\bin\php\php5.5.12\pear\tests
  src_dir => C:\wamp\bin\php\php5.5.12\pear\src
  php_bin => C:\wamp\bin\php\php5.5.12\php.exe
  php_ini => C:\wamp\bin\php\php5.5.12\php.ini
  php_prefix =>
  php_suffix =>
Custom System paths:
User config (from C:\Users\mrz\pear\pearconfig.xml):
  default_channel => pear2.php.net
  auto_discover => 0
  http_proxy =>
  cache_dir => C:\wamp\bin\php\php5.5.12\pear\cache
  temp_dir => C:\wamp\bin\php\php5.5.12\pear\temp
  verbose => 1
  preferred_state => stable
  umask => 0022
  cache_ttl => 3600
  my_pear_path => C:\wamp\bin\php\php5.5.12\pear
  plugins_dir => C:\Users\mrz\pear
(variables specific to pear2.php.net):
  username =>
  password =>
  preferred_mirror => pear2.php.net
  download_dir => C:\wamp\bin\php\php5.5.12\pear\downloads
  openssl_cert =>
  handle =>
  paranoia => 2
Custom User config (from C:\Users\mrz\pear\pearconfig.xml):
(variables specific to pear2.php.net):
任何帮助都将不胜感激

更新:我试过了

php pyrus.phar install pear/PEAR
如图所示

我得到:

c:\wamp\bin\php\php5.5.12>php pyrus.phar install pear/PEAR
Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52
Using PEAR installation found at C:\wamp\bin\php\php5.5.12\pear
Downloading pear.php.net/PEAR
Mime-type: application/octet-stream
Downloading pear.php.net/Archive_Tar=================================================================>] 100% (284/284 kb)
Mime-type: application/octet-stream
Downloading pear.php.net/Structures_Graph============================================================>] 100% (19/19 kb)
Mime-type: application/octet-stream
Downloading pear.php.net/Console_Getopt==============================================================>] 100% (12/12 kb)
Mime-type: application/octet-stream
Downloading pear.php.net/XML_Util====================================================================>] 100% ( 5/ 5 kb)
Mime-type: application/octet-stream
[====================================================================================================>] 100% (16/16 kb)
Warning: rename(C:\wamp\bin\php\php5.5.12,C:\wamp\bin\php\.old-php5.5.12): The process cannot access the file because it is bein
g used by another process. (code: 32) in phar://C:/wamp/bin/php/php5.5.12/pyrus.phar/Pyrus-2.0.0a4/php/Pyrus/AtomicFileTransacti
on/Transaction/TwoStage.php on line 82

Call Stack:
    0.0350    1218224   1. {main}() C:\wamp\bin\php\php5.5.12\pyrus.phar:0
    0.0580    2198784   2. Pyrus\ScriptFrontend\Commands->run() C:\wamp\bin\php\php5.5.12\pyrus.phar:69
    0.0970    3600832   3. Pyrus\ScriptFrontend\Commands->install() phar://C:/wamp/bin/php/php5.5.12/pyrus.phar/Pyrus-2.0.0a4/ph
p/Pyrus/ScriptFrontend/Commands.php:309
    0.1110    4364600   4. Pyrus\Installer::commit() phar://C:/wamp/bin/php/php5.5.12/pyrus.phar/Pyrus-2.0.0a4/php/Pyrus/ScriptF
rontend/Commands.php:559
    8.9739   11845424   5. Pyrus\AtomicFileTransaction::commit() phar://C:/wamp/bin/php/php5.5.12/pyrus.phar/Pyrus-2.0.0a4/php/P
yrus/Installer.php:344
    8.9739   11845496   6. Pyrus\AtomicFileTransaction\Manager->commit() phar://C:/wamp/bin/php/php5.5.12/pyrus.phar/Pyrus-2.0.0
a4/php/Pyrus/AtomicFileTransaction.php:90
    8.9919   11845456   7. Pyrus\AtomicFileTransaction\Transaction\TwoStage->commit() phar://C:/wamp/bin/php/php5.5.12/pyrus.pha
r/Pyrus-2.0.0a4/php/Pyrus/AtomicFileTransaction/Manager.php:165
    8.9919   11845488   8. rename() phar://C:/wamp/bin/php/php5.5.12/pyrus.phar/Pyrus-2.0.0a4/php/Pyrus/AtomicFileTransaction/Tr
ansaction/TwoStage.php:82

Pyrus\Installer\Exception: Installation failed
 Pyrus\AtomicFileTransaction\MultiException: ERROR: commit failed
  Pyrus\IOException: CRITICAL - unable to complete transaction, rename of actual to backup path failed
   Pyrus\AtomicFileTransaction\RuntimeException: Cannot rollback - not in a transaction
为什么它试图重命名我的整个php5.5.12目录?还是这样?FTW

更新:好的,我手动安装了Pear。已将include\u路径更改为

include_path = ".;C:\wamp\bin\php\php5.5.12\pear"
我的电话

include_once("php\Mail.php");
我已经克服了“missing”Pear.php错误。但是现在,邮件找不到Net_SMTP等


加克。我是否必须为每个扩展指定单独的include\u路径条目?或者,我应该去掉\php并将其内容移动到\pear中,并进行相关的代码和配置更改吗?或者将所有扩展文件(不带目录树)转储到与我的脚本相同的www目录中?

最简单的方法是,不移动文件:

include_path = ".;C:\wamp\bin\php\php5.5.12\pear;C:\wamp\bin\php\php5.5.12\pear\php"
但实际上不应该有子目录
Mail.php
应与
Pear.php
位于同一目录中


(虽然我在Linux上使用这个东西,所以我不知道这个特定的发行版通常是如何设置的。)

不能说,因为我以前在Windows上使用过PHP,但是在
PHP
子目录中拥有所有内容有点奇怪,因为它是PEAR,所以都是PHP…我同意。但显然,这是pyrus安装的一部分。我尝试将\php下的所有内容移动到\pear下,并相应地更改了调用。邮件成功发送!耶!但我仍然会遇到这些错误:不应该在第37行的D:\Data\dev\Web\solo\u ws\mailtest.php中静态调用非静态方法Mail::factory(),不应该静态调用非静态方法Mail\u RFC822::parseAddressList(),假设第253行的C:\wamp\bin\php\php5.5.12\pear\Mail.php中的不兼容上下文中有$this,则Mail.php需要稍加修改。如果在新php上使用旧代码,则肯定会有一些严格的代码警告。注意!谢谢当然,现在我可以发送邮件了,我发现我们的SMTP服务器拒绝我们域外的任何地址。哈