我最近购买了VPS计划。 我安装了Ubuntu 9.10,PHP5和Postfix。 我不能让PHP的邮件()函数工作。 在我的PHP脚本中,mail()函数返回true,这表明它正在工作。 但没有人收到我的网站的电子邮件。 当我打电话给sudo apt-get install postfix的时候,postfix的安装似乎很顺利。 调用/etc/init.d/postfix start给了我“启动Postfix邮件传输代理后缀”。 调用/etc/init.d/postfix重新加载给了我错误“致命的:邮件系统没有运行”。 在安装postfix之前,我使用的是使用PHP mail()函数的sendmail。 如何debugging和解决这个问题? 额外的注意事项我在/var/log/mail.log查找,发现每次我调用PHP的邮件() Feb 3 11:27:41 mywebsitedomain postfix/postdrop[23793]: warning: unable to look up public/pickup: No such file or directory
当我们在Apache中执行PHP时,其中一个没有进一步更新或重新configuration的旧式服务器突然停止将主机名parsing为IP。 但是,从CLI执行时仍然可以正常工作。 从RSScaching上次修改时间,我推断它在3月28日左右停止工作。 为了重现这个问题,我使用fsockopen()创build了一个脚本,它说“连接失败(errno 2)”。 我进一步减less了与失败的名称parsing有关的问题: <?php $addr = gethostbyname("twitter.com"); echo "ADDR($addr)"; ?> 当我通过Apache运行这个,输出是ADDR(twitter.com) ,这是错误的。 当我从CLI运行这个时,输出是ADDR(aaa.bbb.ccc.ddd)与不同的IP地址,如预期。 服务器设置上没有任何更改。 CLI和Apache模块共享相同的php.ini 。 PHP是Zend Optimizer v2.5.10的v4.4.9版本。 Apache是v1.3.31。 我知道版本是旧的。 但由于没有任何改变,像“先尝试升级版本”的解决scheme是没有解决scheme,因为服务器的function设置/版本被冻结,并将很快被replace。 我们仍然需要解决scheme。 如果我通过脚本运行dig ,它可以在两个环境(mod_php和CLI)中工作,但这不仅仅是一个丑陋的黑客攻击,因为它涉及许多编辑和testing,整个脚本库也是不受欢迎的,因为服务器上的PHP应用程序也被冻结,只收到安全更新。 它将被完全重写(在新服务器上)所取代。 但是由于重写需要一些时间,并且需要连续地replace遗留应用程序的一部分,所以我们需要修复parsing器问题。 我已经search了一下,虽然这个问题是已知的,但是很多人没有find解决办法。 提高内存限制的修复程序不起作用。 重新启动没有工作。 mod_php中的parsing器只是停止工作,没有明显的原因。 🙁 更新:我通过完全停止Apache来解决它,等待片刻,然后再次启动它。 但是这并不能解释这种行为的根源(因此没有令人满意的解决scheme)。 所以我把这个打开。
看来,Lucid Lynx自带PHP 5.3。 有没有一种方便的方法降级到最新的5.2x版本?
我有Apache 2.0,PHP 5.2.4和httpd.conf中的这个指令: AddType application/x-httpd-php-source .php .php3 .php4 .php5 .php6 AddType指令用于将给定的文件扩展名映射到指定的内容types。 这是这个指令的唯一含义。 但是为什么这个方法closures了PHP处理程序,它分配了.php扩展名,我可以在浏览器中查看脚本的源代码? 另一个: AddType application/x-httpd-php5 .php 为什么这个方法开启PHP处理程序? 这只需要将头文件Content-Type: application/x-httpd-发送到我的浏览器,这只能是来自mod_mime的指令AddType含义。 我很困惑。
有没有办法获得当前正在锤击我的VPS的PHP脚本文件名? 例如,当我查看“顶部”时,我看到: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7622 itil 17 0 61388 11m 6004 R 45.8 2.3 0:00.13 php 7626 itil 17 0 58360 8632 5440 R 24.6 1.6 0:00.07 php 我怎样才能知道PHP在那个特定的时间正在处理哪个文件?
我很新的nginx和 – 更多的学习目的 – 即时通讯尝试configurationNginx的运行与不同的用户为每个子域的PHP。 例如,我想使用用户john在foo.example.com上的所有脚本和在bar.example.com上的用户jack 。 我已经创build了我的系统上的用户(Ubuntu的服务器),但我不知道如何指示nginx使用用户 – 即时寻找一个解决scheme,可以处理easly许多用户,可以说〜2000年。 看文档,我不明白,如果我必须为每个用户(不同的端口)产生一个php5-cgi进程,然后把它们抓到我的sites-available网站(如我说我是一个新手,但这看起来像我一个服务器自杀),而在nginxconfiguration中只有2个页面是用中文( page1 , page2 )来写的,用google翻译很难翻译(但是,看代码,使用完全不同于server-suicide方式) 任何build议? 更新 galador的答案做的工作,但即时通讯设法build立一个dinamycal环境(与通配符子域名)不需要重新启动nginx / fpm每个新的网站,这可能吗?
在更大的努力背景下,我遇到了一个令我莫名其妙的问题。 在Mac OS X 10.6.7上,使用系统提供的Apache和PHP,我创build了一个简单的HelloWorld.php脚本,毫不奇怪,只是打印Hello, World! 没有别的。 如果我执行它作为php helloworld.php工作正常。 但是,如果我: sudo su su _www php helloworld.php 它什么都不放出来; php几乎立即返回,没有执行的迹象。 我在哪里脱轨(更重要的是,我应该收集哪些诊断信息来帮助推断问题)? 没有骰子。 bash-3.2$ls -alF foo.php -rw-r–r– 1 _www _www 37 Apr 4 21:08 foo.php bash-3.2$ ls -dalF . drwxr-xr-x 56 _www _www 1904 Apr 4 21:08 ./ bash-3.2$ whoami bbum bash-3.2$ php foo.php Hello, World! bash-3.2$ sudo […]
我在我便宜的虚拟机上运行非常困难的PHP脚本,每周有大约50万页的浏览量,所以这是有点问题。 我每天重新启动我的mysql两次。 这不会是问题,但重新启动MySQL时 /etc/init.d/mysql restart 它重新启动,然后它有时会说, Table './forum/phpbb_posts' is marked as crashed and last (automatic?) repair failed 这个表与这个难以理解的剧本没有任何关系,但是它却是250 000(1.8 gig)的表格,似乎崩溃了。 修理那个需要大约14分钟。 有没有更安全的方法来停止MySQL? 我知道我应该做备份,而且我这样做,但是每天只有一次数据还在增长(这些日子并不快) 目前在Debian GNU / Linux 6.0上运行
问题: 我知道很多人对频繁的版本变化并不满意。 特别是当你坚持使用的最新版本的PHP或MySQL不再在你的仓库中可用时(在我的情况下是REMI),但是你必须安装一个新的服务器,其中包含一些版本稍低的PHP / MySQL包旧的/较早的)从存储库中可用的。 大多数情况下,我们在Centos 5.8 GNU / Linux x86_64操作系统上使用最新版本的Apache,PHP,MySQL。 但是现在,我们的QA团队需要花费很多时间来testing我们所有的项目,以便与新版本兼容,速度如此之快,以至于我们在QA团队的绿灯下更新PHP和/或MySQL和/或安装一个具有特定版本的新服务器,我们发现它已经过时,现在它被更新的版本所取代。 当McAfee PCI Compliance说我们的站点使用潜在危险的PHP版本并迫使我们用新版本的PHP升级所有的服务器时,尤其如此。 目前,我们的默认工作环境包括: OS: CentOS版本5.8(最终版)Linux censored.example.com 2.6.18-308.4.1.el5#1 SMP Tue Apr 17 17:08:00 EDT 2012 x86_64 x86_64 x86_64 GNU / Linux 阿帕奇: 服务器版本:Apache / 2.2.3服务器内置:Feb 23 2012 21:16:56 PHP: PHP 5.3.13(cli)(构build于:May 9 2012 16:20:57)版权所有(c)1997-2012 PHP集团Zend引擎v2.3.0,版权所有(c)1998-2012 Zend技术与eAccelerator v0.9.6。 1,版权所有(c)2004-2010 eAccelerator,由eAccelerator MySQL的: mysql Ver 14.14 […]
我似乎无法得到真正的客户端IP显示在PHP的$ _SERVER ['REMOTE_ADDR']。 它显示在$ _SERVER ['X_FORWARDED_FOR']中,但是$ _SERVER ['REMOTE_ADDR']总是指向Varnish服务IP。 我已经玩了几乎每一个Varnish VCLbuild议,我可以find。 我已经安装了Apache模块mod_rpaf。 但我仍然无法获得$ _SERVER ['REMOTE_ADDR']来反映客户端的真实IP … 所以我的问题是, 这甚至有可能吗? 每个使用Varnish的人都必须为所有的PHP应用程序做这样的事情吗? $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR']; 或者我只是没有正确configuration?