Articles of PHP

从网站的电子邮件有时空白或乱码

我们公司有一个基于osCommerce的在线商店网站。 系统使用PHP的mail()函数发送各种原因的电子邮件,如密码更改,订单确认等。 我们偶尔有客户报告他们收到的电子邮件是空白的(电子邮件是纯文本格式)或乱码(电子邮件是HTML格式)。 在后一种情况下,它实际上只是作为原始文本显示的HTML,但客户当然不能阅读它。 在这种情况下,第一个开始标签的< ,有时还有几个字符丢失了。 为了确定这种情况是否发生在某些客户或电子邮件系统上,我configuration了网站,在每个消息的CC末尾发送一个CC消息给服务帐户。 这些CC消息始终完好无损,并在Outlook中正确显示。 对于它的价值,Hotmail用户似乎更频繁地发生一些事情,但当然不限于此。 由于该网站在共享的(Debian)主机上,因此从这方面debugging事情的宝贵的一点,虽然如果我做出了正确的要求,我觉得托pipe公司的员工会帮助我,即使他们有限的资源在这样的事情上。 有什么我可以做什么来尝试确定为什么这些电子邮件没有被某些客户正确接收的build议,但一个CC副本到达就好了? 更新 因为我不再在那个公司工作,我就没有机会去testing任何新的想法。 如果您对这个问题有任何的想法,那么一定要把它们发布给其他可能遇到类似问题的人,但是我不能接受这个问题的答案。

Centos / MySQL服务器高负载

我目前运行一个网站,每天大约有15,000-20,000次点击。 我们目前运行一个非常活跃的论坛,使用Vbulletin软件进行托pipe。 我们有450万个post,8万个线程,大约有11000个成员,其中不到三分之一的人一直活跃着。 现在我运行带有4GB RAM,Centos 5.5的Intel Xeon四核(2.13Ghz),并在机器上运行DirectAdmin来pipe理它。 我也运行当前稳定版本的Apache,MySQL和php。 这是此机器上唯一托pipe的网站。 现在在一天的随机时间里,有时候忙时服务器负载可能会达到20,但是当我们只有200个用户活动的时候也会发生这种情况。 我不明白是什么造成这些问题。 有时我会得到页面,在其他时间可以在2秒钟内生成,如5-8秒。 我已经定制了my.cnf文件,并没有什么帮助,我不知道还有什么可以转动,所以如果有人有任何build议,请让我知道。

PostgreSQL pg_hba.conf与“密码”身份validation将无法与PHP pg_connect?

我最近尝试了pg_hba.conf中的设置。 我读了PostgreSQL的文档,我认为“密码”auth方法是我想要的。 有很多人有权访问PostgreSQL正在处理的服务器,所以我不想要“信任”方法。 所以我改变了。 但是,PHP停止了与数据库的工作。 我得到的消息是“警告:pg_connect():无法连接到PostgreSQL服务器:致命:密码authentication失败,用户”myuser“在/my/path/to/connection/class.php在35行”。 这有点奇怪,因为我可以通过phppgadmin连接没有任何问题,也可以从我的家用电脑连接psql – 再次没有任何问题。 这是我的pg_hba.conf: # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all password # IPv4 local connections: host all all 127.0.0.1/32 password # IPv6 local connections: host all all ::1/128 password 我正在使用的连接string是pg_conenct: $connect_string = "host=localhost port=5432 dbname=mydbname user=auser password=apassword"; […]

IIS上的php复制文件到另一台服务器上的Windows共享

我在运行IIS 6(服务器“A”)的Intranet Web服务器上有一个php应用程序,该应用程序包含一个将file upload到另一个子网上运行IIS 7.5(服务器“B”)的其他Web服务器的窗体。 服务器A有映射的驱动器到服务器B上的共享文件夹。尝试将上载的文件复制()或fwrite()到服务器B时,出现“权限被拒绝”或“文件不可写入”错误。 我需要在服务器B上的目标文件夹上设置哪些安全权限以允许服务器A的IIS / php写入文件夹? 我可以使用Windows资源pipe理器复制文件,但当然这是与不同的用户凭据。 我想完成这个任务,而不需要添加一个FTP服务器到服务器B.

memcached php模块不能在EC2上编译

我想在EC2上做这个,使用amazon linux的微型实例 我安装并启动了memcached服务,没有任何问题。 但是当试图使用pecl的PHP部分告诉我pecl没有安装。 所以我安装了梨,然后pecl,当试图运行pecl安装memcache我有一个错误要求zlib(这btw,安装),所以而是我做到了这一点: wget http://pecl.php.net/get/memcache-2.2.5.tgz tar xvf memcache-2.2.5.tgz cd memcache-2.2.5 phpize ./configure –with-zlib-dir=/usr/share/syslinux/com32/ 但是当我做“make”的时候,我得到一长串的错误,所有这些都在“zend”文件中,大部分都是缺失的types(即uint,hash_func_t等)。 我的猜测是,其他东西需要安装(即所有types的包含文件要求),所以我不必自己定义所有缺less的types In file included from /usr/include/php/Zend/zend.h:237, from /usr/include/php/main/php.h:35, from /usr/local/src/memcache-2.2.5/memcache.c:26: /usr/include/php/Zend/zend_alloc.h:49: error: expected specifier-qualifier-list before 'uint' In file included from /usr/include/php/Zend/zend.h:270, from /usr/include/php/main/php.h:35, from /usr/local/src/memcache-2.2.5/memcache.c:26: /usr/include/php/Zend/zend_hash.h:45: error: expected declaration specifiers or '…' before '*' token /usr/include/php/Zend/zend_hash.h:45: error: expected declaration […]

尝试更改用户Apache运行,并在使用会话时出现错误

我已经改变了Apache运行的用户,并试图在PHP中使用会话时获得以下内容: 警告:未知:打开(/ var / lib / php / session / sess_phbfugace53ngs8kt9pdgovf21,O_RDWR)失败:权限被拒绝(13) 警告:未知:无法写入会话数据(文件)。 请确认session.save_path的当前设置在第0行的Unknown中是正确的(/ var / lib / php / session) 我运行chown myuser /var/lib/php/session并仍然出错。 我还需要做什么?

PECL安装/ phpize错误

这是我的PHP设置 ################################################################## # setup PHP ################################################################## # we use this to make inline CSS in newsletter yum install php php-tidy php-xml php-xmlrpc php-gd -y # if make is missing yum install gcc automake autoconf libtool make -y # configuring php pecl http yum install zlib-devel curl-devel php-devel php-pear -y # required by phpMyAdmin yum install […]

PHP是永远运行脚本,但我有max_execution_time设置为30

我有一个专门的框(所以我可以编辑所有设置)运行PHP 5.2.16。 我有Max_execution_time和max_input_time设置为60以下,重新启动apache(使用apachectl -k优雅),但脚本永远不会超时。 我用两个脚本testing了这个(实际上,我首先注意到了'真正'的脚本,可能应该已经超时了,但从来没有这样做过) while (1) { sleep(10); } 因为显然sleep()不会影响max_execution_time()我试过这个: while(1) { file_get_contents($url); } ($ url =一个大的图像,我也回应的东西,所以我知道它正在运行) 我可以运行脚本超过10分钟。 我检查过的东西: 这样做: echo ini_get('max_execution_time'); 回声60(这是从php.ini) 这样做: set_time_limit(5); echo ini_get('max_execution_time'); 回声5 但在这两种情况下,脚本将运行并永远运行! 我重新启动了Apache 我已经检查了/etc/php.ini的max_execution_time和max_input_time 。 据我所知,没有其他的php.ini 。 在任何“以前的”(更高的)目录中的.htaccess中没有任何关于max_execution_time或set_time_limit 如前所述,这不仅仅是一个问题,当我使用sleep() – 我注意到,我可以上传和处理数百个文件,而不需要set_time_limit(0)那里。

MySQL INSERT偶尔不会插入到数据库中

我有一个INSERT查询,它向数据库添加了一个命令,它已经在生产服务器上成功运行了几年,今天大约有10%的这些INSERT没有出现在数据库表中,代码没有改变运行这个查询,所以我假设这是基于性能的,因为最近服务器肯定是负载较重。 该表是MyISAM,在CentOS服务器上运行大约90,000条logging。 有没有任何疑难解答方法,我可以使用查看为什么查询不插入数据,因为我觉得服务器本身是瓶颈?

closures一个虚拟主机的gzip压缩

我遇到了一个问题,我认为 PHP deprecation错误导致头格式错误,导致330错误。 如果我禁用E_DEPRECATION的错误报告,错误消失,所以我相当肯定它与此有关。 在我们的生产网站上,这不是问题,因为我们没有显示任何错误。 但在我们的开发环境中,我需要能够看到错误才能解决它们。 我们使用nginx和两个不同的虚拟主机。 我想知道的是,如果有办法在这些虚拟主机之一上禁用gzip压缩,那么我可以看到是否是这个问题。 我不是一个服务器pipe理员,我只是在电视上播放一个,所以请在我身上轻松一下。