2015-11-04 78 views
2

我一直在这个问题上敲了几个礼拜。我发现很多人遇到过类似的问题,并且在解决我的问题方面走得更远,但并不是所有的方式。PHP + Pear | Pyrus + Mail;邮件无法找到Pear.php

WAMPserver 2.5(PHP 5.5.12)

我原来装梨的事,但被搞砸了(在配置路径是疯了吗?),所以我试图重新安装,然后事情就真的搞砸了,所以我删除了所有与梨相关的东西(除了pear子目录之外,因为Windows抱怨说它中的一个文件正在使用,尽管它是空的),并且给了Pyrus一个镜头。至少在包管理方面,现在情况似乎变得更好了。

我相信我的include_path(s)设置正确,因为现在我的脚本至少可以找到Mail.php脚本。

include_path = ".;C:\wamp\bin\php\php5.5.12\pear\php" 

我的电话,工作:

include_once("Mail.php"); 

然而,Mail.php现在抱怨说,它无法找到对PEAR.php:

无法打开需要 '对PEAR.php' (include_path ='.; C:\ wamp \ bin \ php \ php5.5.12 \ pear \ php')在C:\ wamp \ bin \ php \ php5.5.12 \ pear \ php \ Mail.php上线46

没有Pear.php文件a在\ php5.5.12下的任何地方。

发生这种情况是因为我使用Pyrus,并且Mail设置为在梨环境中工作? (即使Pyrus声称是“使用在C:\ wamp \ bin \ php \ php5.5.12 \ pear中找到的PEAR安装”,请参阅下文。)我是否必须同时安装Pear和Pyrus?我应该使用pyrus.phar来安装Pear吗?如上所述,先前安装梨的尝试并不成功。两个梨和梨的文档可以通过具有图形描绘了如何将标准的安装可以提高应该看起来像子目录的方面,等等,这是我的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 

这里是我的梨配置:

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 

https://pear.php.net/package/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?

更新:好的,我手动安装梨。包含路径更改为

include_path = ".;C:\wamp\bin\php\php5.5.12\pear" 

我呼吁

include_once("php\Mail.php"); 

而且我已经得到过 “失踪” 对PEAR.php错误。但是现在,Mail无法找到Net_SMTP等。

Gack。我是否必须为指定一个单独的include_path条目,每个扩展名?或者,我应该摆脱\ php并将其内容移入\ pear,并附带相关的代码和配置更改?或者只是将所有的扩展文件(没有目录树)转储到与我的脚本相同的www目录中?

+0

不能说因为我以前在Windows上使用PHP,但有一切一个'php'子目录有点奇怪,因为它是PEAR,所以它都是PHP ... – miken32

+0

我同意。但显然,这是pyrus安装的一部分。 – Pete

回答

0

最容易做的,不移动文件,会是这样:

include_path = ".;C:\wamp\bin\php\php5.5.12\pear;C:\wamp\bin\php\php5.5.12\pear\php" 

但真的不应该是一个子目录。 Mail.php应与Pear.php位于同一个目录中。

(我用在Linux上这个东西了,所以我不知道该怎么这个特殊的分布通常进行一些设置。)

+0

我尝试将\ php下的所有内容移至\ pear下,并相应地更改了我的呼叫。邮件成功发送!好极了!但我仍然收到这些错误: – Pete

+0

_非静态方法Mail :: factory()不应该在第37行的D:\ Data \ dev \ Web \ solo_ws \ mailtest.php中静态调用012, 非静态方法Mail_RFC822不应该静态调用:: parseAddressList(),假设$ this来自C:\ wamp \ bin \ php \ php5.5.12 \ pear \ Mail.php中不兼容的上下文,位于第253_行 声音像Mail.php需要一点修改。 – Pete

+0

你在新的PHP上使用旧代码,它必然会有一些严格的代码警告。 http://stackoverflow.com/a/7114422/1255289 – miken32