有没有人知道PHP的包管理器库(例如apt或yum for linux发行版)除了 PEAR?我正在开发一个应该包含用于模块管理的包管理系统的系统.我设法使用PEAR获得了一个可行的解决方案,但是除了管理PEAR安装之外,使用PEAR客户端并不是最佳解决方案,因为它不是为此而设计的.我将不得不修改/扩展它(例如,实现安装/升级操作或将PEAR特定文件(如锁定文件)移离系统根目录),尤其是CLI客户端代码非常混乱和PHP4.所以也许有人有一些建议
我知道像Magento和symfony这样的大型系统使用PEAR作为他们的PM.Magento使用原始PEAR客户端的黑客版本(我想避免),symfony的实现似乎与框架完全集成,但至少从头开始编写客户端是一个很好的起点.无论如何,如果有人有建议:请:)
我使用PEAR的mail和mail_mime包发送邮件,示例代码如下:
$sendStart=array();
require_once('Mail.php');
require_once('Mail/mime.php');
$sendStart['mail'] =& Mail::factory('mail');
$sendStart['mime'] = new Mail_mime("\n");
$sendStart['mime']->setHTMLBody($html);
$sendStart['headers']['Subject']=$title;
$sendStart['headers']['X-SMTPAPI']='{"category": ["MailID-XXX"]}';
$body=$sendStart['mime']->get(array(
'html_charset'=>'UTF-8',
'text_charset'=>'UTF-8',
'head_charset'=>'UTF-8'
));
//echo ($sendStart['mime']->_htmlbody); exit;
$sendStart['mail']->send('xxx@example.com',$sendStart['mime']->headers($sendStart['headers']),$body);
Run Code Online (Sandbox Code Playgroud)
通过此代码发送邮件时,我遇到了一个奇怪的问题.我在电子邮件正文中有图像,有时图像不显示.当我调试问题时,我发现.图片网址中缺少这个问题.但是,如果我在发送行之前打印邮件(因为我在代码中注释掉),它会完美地打印出图像.
正确的图片网址: http://www.domain.com/image.png
在邮件中:http://www.domaincom/image.png或http://www.domain.com/imagepng......等
HTML代码的一部分,其图像如下所示:
<table cellpadding="0" cellspacing="0" border="0" class="image-table image-2" align="center" style="float:none;margin-left:auto;margin-right:auto;text-align:left;">
<tbody>
<tr>
<td class="element" style="text-align: left;height: auto;overflow: hidden;-webkit-text-size-adjust: none;">
<!--[if gte mso 9]><img alt="Placeholder Image" src="http://www.domain.com/image.png" style="outline: none; text-decoration: none; display: block; clear: none; float: none; margin-left: auto; margin-right: auto;display:none; mso-hide: none;" align="center" width="394"><![endif]--><![if !mso]><!-- --><img alt="Placeholder …Run Code Online (Sandbox Code Playgroud) 我正在寻找有关如何为我们的项目设置PEAR通道的说明,以便我们可以使用pear安装程序进行部署.我在网上搜索了一段时间,找不到任何简单的信息.我按照这个教程学习了一段时间,但是我有一段时间让这个工作.有谁知道如何做到这一点?有更简单的方法吗?
我是一个高级初学者,试图选择一个PHP存储库或框架,我可以将其作为可重用代码的可靠来源.
我非常喜欢PEAR的想法,但是由于缺乏优秀/最新的文档而让我感到害怕.
例如,PEAR上的大多数文章都是过时的,没有经过好评的书籍,官方手册非常不吸引人.
我已经考虑过PHP框架(CakePHP,CodeIgniter,Symfony,Zend)和CMS框架(Drupal,Joomla,WordPress),但作为一个长期解决方案,我希望可重用的代码不会增加任何不必要的开销.
换句话说,我想要为单一目的而编写的代码,我可以将其插入我的应用程序,而不需要"借用"任何代码而不是应用程序所需的代码 - 就像我自己从头开始编写代码一样.
所以我问 - PEAR是可重用PHP代码的长期选择吗?
我在Debian上使用PHP 5.3并根据php -m'Phar'加载.
但是执行php pyrus.phar或php pyrus.phar config-show导致根本没有输出.
可能是什么问题?
debian:~# php -v
PHP 5.3.5-1 with Suhosin-Patch (cli) (built: Feb 19 2011 01:57:59)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
Run Code Online (Sandbox Code Playgroud)
php -i 给我:
[...]
Phar
Phar: PHP Archive support => enabled
Phar EXT version => 2.0.1
Phar API version => 1.1.1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试发送文本和HTML的电子邮件,但我无法正确发送正确的标题.特别是,我想设置Content-Type标题,但我找不到如何为html和文本部分单独设置它.
这是我的代码:
$headers = array(
'From' => 'info@mydomain.com',
'Return-Path' => 'info@mydomain.com',
'Subject' => 'mysubject',
'text_encoding' => '7bit',
'text_charset' => 'UTF-8',
'html_charset' => 'UTF-8',
'head_charset' => 'UTF-8',
'Content-Type' => 'text/html; charset=UTF-8'
);
$mime = new Mail_mime();
$html = '<html><body><b>my body</b></body></html>';
$text = 'my body';
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);
$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']);
$mail_object->send('test@mydomain.com', $headers, $body);
Run Code Online (Sandbox Code Playgroud)
这是我收到的电子邮件:
From: info@mydomain.com
Subject: mysubject
text_encoding: 7bit
text_charset: UTF-8
html_charset: UTF-8
head_charset: UTF-8
Content-Type: multipart/alternative;
boundary="=_7adf2d854b1ad792c802a9db31084520"
Message-Id: <.....cut.....>
Date: Mon, 8 Oct …Run Code Online (Sandbox Code Playgroud) 我正在尝试安装PEAR以用于PHP.当我阅读http://pear.php.net/manual/en/installation.getting.php上的安装说明时 ,我应该运行go-pear.bat文件,我在C:\ wamp \中bin\php\php5.3.0目录.根据我读过的所有安装指南,它应该安装并问我一系列安装问题,但是我收到以下错误:
phar"C:\ wamp\bin\php\php5.3.0\PEAR\go-pear.phar"没有签名PHP警告:require_once(phar://go-pear.par/index.php):未能开放流:phar错误:C:\ wamp\bin\php\php5.3.0\PEAR\go-pear.phar中的无效url或不存在的phar"phar://go-pear.phar/index.php"第1236行
警告:require_once(phar://go-pear.par/index.php):无法打开流:phar错误:无效的url或不存在的phar"phar://go-pear.phar/index.php"in第1236行的C:\ wamp\bin\php\php5.3.0\PEAR\go-pear.phar按任意键继续...
我不知道为什么我收到这个错误.我刚刚安装了新的Wampserver.
从RHEL 5x升级到CentOS 6x后,我开始在httpd日志中看到这些错误:
PHP严格标准:不应在第33行的/web/sites/blah/somescript.php中静态调用非静态方法PEAR :: isError()
我看到了MDB2的类似错误.更多关于这一点.
somescript.php:
32 $mdb2_dbx = MDB2::factory($dsn_mdb2, $mdb2_options);
33 if (PEAR::isError($mdb2_dbx))
34 {
35 $err = '<p>Cannot connect to database: ' . $mdb2_dbx->getMessage();
36 errorHandler($err);
37 }
Run Code Online (Sandbox Code Playgroud)
我做的第一件事就是编辑/etc/php.ini并添加& ~E_STRICT到错误报告中.重新启动httpd以加载新配置.仍然收到这些错误消息.
其他人提到了MDB2的相同问题,所以我将这些软件包更新到beta版本.这似乎解决了MDB2错误,但我仍然在httpd日志文件中收到PEAR错误消息.
系统信息:
# pear list
PEAR 1.9.4 stable
MDB2 2.5.0b5 beta
MDB2_Driver_mysql 1.5.0b4 beta
MDB2_Driver_mysqli 1.5.0b4 beta
# php --version
PHP 5.4.20 (cli) (built: Sep 18 2013 19:55:33)
# cat /etc/centos-release
CentOS release 6.4 (Final)
# apachectl -v …Run Code Online (Sandbox Code Playgroud) 我最终尝试安装PEAR,因此我可以轻松安装PHPUnit.我想建立一个Mac,Apache,MySQL,PHP,PHPUnit开发环境,以便我可以在本地进行测试.我已经有Apach,MySQL和PHP工作了.现在我只需要PHPUnit,这意味着我需要PEAR来安装它.
我已经搜遍了所有,并且有关于如何在Mac OS X 10.5上安装PEAR的"教程"的一些变体.但是,我似乎无法让他们中的任何一个工作!有人有这个成功吗?我并不完全相信我已经设置了应有的一切,所以如果您可以包含"默认"Mac OS X 10.5包含路径,或者简单解释一切应该去哪里,我将不胜感激.
按照本教程,我执行以下操作:
curl http://pear.php.net/go-pear > go-pear.php
sudo php -q go-pear.php
Run Code Online (Sandbox Code Playgroud)
我按Enter键直到找到包含7个包含路径的列表:
1. Installation prefix ($prefix) : /Users/andrew
2. Temporary files directory : $prefix/temp
3. Binaries directory : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests
Run Code Online (Sandbox Code Playgroud)
我改变Installation prefix是/usr/local,按回车键继续,类型Y也安装PEAR_Frontend_Web-beta, PEAR_Frontend_Gtk2, MDB2.最终,一切都安装好了.
下一个...
在第一次尝试时,我认为include_path是从php.ini文件中注释掉的,但由于我已经更改了这一行,这不是我第一次尝试安装,我得到以下消息:
WARNING! The …Run Code Online (Sandbox Code Playgroud) 我升级到Mountain Lion并安装了php5.4,这需要一些调整Mountain Lion更改php位置
我的下一个问题是如果我跑pear -v或者pecl -v这些回归
Could not open input file: /usr/lib/php/pear/pearcmd.php
Could not open input file: /usr/lib/php/pear/peclcmd.php
Run Code Online (Sandbox Code Playgroud)
我是否需要更改pear和pecl以指向安装在/ usr/local/php5/bin /中的新php
如果是这样,我该如何做,我将丢失所有以前安装的扩展程序,如phpunit?
谢谢