электронная почта — PHP + Pear | Pyrus + Mail; Почта не может найти Pear.Stack Overflow

Я бился головой об этом уже несколько недель. Я нашел много людей с похожими проблемами, и немного продвинулся в решении моей проблемы, но не до конца.

WAMPserver 2.5 (PHP 5.5.12)

Изначально я установил Pear, но что-то испортилось (пути в конфиге были сумасшедшими?), Поэтому я попытался установить снова, а потом все действительно испортилось, поэтому я удалил все, что связано с Pear (за исключением поддиректории pear, потому что Windows жаловалась, что файл в нем использовался, хотя и был пуст), и дал Пирусу шанс. Теперь кажется, что все работает лучше, по крайней мере, как управление пакетами.

Я считаю, что мои 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

В каталоге \ php5.5.12 нигде нет файла Pear.php.

Это происходит потому, что я использую Pyrus, а Mail настроен для работы в среде Pear? (Даже несмотря на то, что Pyrus утверждает, что «использует установку PEAR, найденную в C: \ wamp \ bin \ php \ php5.5.12 \ pear», см. Ниже.) Нужно ли устанавливать Pear и Pyrus? Должен ли я использовать pyrus.phar для установки Pear? Как отмечалось выше, предыдущие попытки установить Pear были менее чем успешными. Документация для Pear и Pyrus может быть улучшена с помощью графического изображения, показывающего, как должна выглядеть стандартная установка с точки зрения подкаталогов и т. Д. Вот так выглядит моя ветка 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

как показано на 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 на

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, что и мой скрипт?

2

Решение

Проще всего сделать это без перемещения файлов:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]