Articles of PHP

在同一台服务器上使用SSL运行Java和PHP应用程序有什么好的设置?

我有一个Java和一个PHP应用程序,我都希望在同一台机器上运行(使用Tomcat)。 据我所知,我有两个select: 选项1:使用mod_jk执行经典的apache-tomcat设置,并让apache处理php请求,并将所有请求转发到Java应用程序到tomcat。 选项2:只使用tomcat安装php就可以了。 所以,没有额外的Apache服务器来处理PHP。 我对这方面的经验并不多,所以我想知道哪一种select是明智的select,因为我无法预见可能会出现哪些问题。 我个人更喜欢选项2,因为我只能pipe理一台服务器而不是两台。 不过,我对此感觉不好,因为大多数人似乎更喜欢选项1。 我应该select哪个选项? 重要提示:我需要为 (php和java)应用程序提供SSL支持 。 据我所知,创build用于购买SSL证书的CSR文件在apache和tomcat(openssl和keytool)之间是不同的。 由于我不想购买两张证书,所以必须记住这一点。

为什么这个Apache的PHPpipe道日志脚本不能正常工作?

我有一个像这样的pipe道日志程序: #!/usr/bin/php <?php $fd = fopen("php://stdin", "r"); while(true) { $l = fread($fd,8192); $l = trim($l); if($l =="") continue; file_put_contents('/home/proxy/testfile',$l."\n", FILE_APPEND); } fclose($fd); 并在我的networking服务器configuration我有: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" proxylog CustomLog "|/home/proxy/logger.php" proxylog 奇怪的是,我收到一些写入日志input,但只是很less。 远远低于默认的日志文件。 我也不能识别一个模式。 我也等了很长时间,并成功地检查了我的自定义pipe道日志中最后一个日志条目之前的时间范围内缺less的日志行 – 以消除缓冲区造成这种情况的可能性。 有任何想法吗?

我应该使用suphp还是mod_php共享主机?

我正在考虑使用suphp。 看来,新创build的文件在PHP获得所有权apache.apache,这可能成为一个问题。 另外,似乎垃圾邮件的发送和php脚本的加载使用情况的监视更容易监视与suphp。 但是恐怕这会降低服务器的性能。 我使用Plesk和DirectAdmin控制面板作为服务器,每个服务器主机约有200个域名,但我不想看到suphp的负载大幅度增加。 另外我不知道,如果suphp只是通过CGI的PHP的花式名称。 suphp 几乎慢了10倍? 这只是在CGI下的PHP? 我们10年前做的方式? 所有脚本都在用户名下运行。 最小权限= 640。 mod_php的 快多了 与apache更好的整合? 脚本在apache下运行:apache。 最小权限= 64 4(!),读取的密码文件只受到open_basedir的限制,而不是实际的linux默认permisisons系统? 那么… suphp提供了更高的安全性吗? 它在监视威胁(垃圾邮件),基准testing(spiking php脚本)等方面有很多好处吗? 性能stream失有多大?

在Linux上设置默认邮件发件人(PHP)

每当我用mail()函数在php中mail()时,当我以用户的身份收到mail()时,电子邮件显示为从“[email protected]”发送。 现在我想要从“[email protected]”作为标准发送,而不必在mail()函数时设置“From:”标题。 我不知道如何改变这一点,所以有一点帮助会很好。 我用一个正常的LAMP设置运行CentOS 5.6。

服务器负载每天高峰数次,过去一个月的平均负载是全年平均负载的5倍

为我们(Debian)LAMP集群设置的My Munin通知不断告知我,我们的生产机器上的负载一直处于危险的水平。 虽然全年的平均负荷一般在2到8之间,但过去一个月和过去一个月的负荷已经暴涨到了10,18,有时甚至是50-60。 尖峰一次只能持续5-10分钟,大约每2-3小时发生一次。 尖峰不会影响性能,因为我有一个脚本,当负载超过10时,会将stream量从服务器发送到镜像CDN。我已经查找与此时间范围相关的cron作业,但没有任何可以看到的情况导致这一点。 网站stream量也是正常的(我们每天接收约20万次访问)。 这个Web服务器依赖的MySQL数据库似乎正常运行。 该服务器的负载较低,性能较好。 我也试着想想在这个问题开始的时候我已经改变了什么,我真的想不出什么。 这可能不会继续下去。 也许在顶部的打印输出中有一条线索,我没有看到。 我如何着手寻找原因? – 典型的顶部,当负载不峰值时: top – 11:13:09 up 472 days, 25 min, 1 user, load average: 6.08, 4.29, 3.80 Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie Cpu(s): 41.2%us, 5.8%sy, 0.0%ni, 49.5%id, 2.7%wa, 0.1%hi, 0.7%si, 0.0%st Mem: 3369592k total, 2166980k used, 1202612k […]

configuration为FastCGI的PHP的Apache和不带后缀的脚本

我使用mod_fcgid在Apache内部工作FastCGI PHP。 但是我注意到PHP脚本甚至没有指定后缀.php。 例如:如果文件是mail.php那么http://example.com/mail.php和http://example.com/mail返回相同的PHP文件mail.php 这是常见的行为? 而且应该是这个(执行没有后缀)禁用? 我的Apacheconfiguration是: AddHandler fcgid-script .php <Directory "{WwwRoot}"> Options -Indexes MultiViews FollowSymLinks +ExecCGI FCGIWrapper {ConfigsRoot}/fcgi-php5 .php Order allow,deny allow from all </Directory> 用简单的包装 #!/bin/sh PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=2000 export PHP_FCGI_MAX_REQUESTS /usr/bin/php5-cgi 谢谢。

在PHP中设置SendMail

我有一个Windows XP机器,我已经安装了IIS 5.1并设置我自己的网站。 我想安装PHP,以便我可以使用它的一些function,特别是SendMailfunction。 有人可以向我解释(用纯英文,因为我不知道设置PHP的任何东西)如何去设置在PC上。 谢谢你的帮助。

访问被拒绝(使用密码:NO)通过主机名远程站点login尝试当给出密码

我正在远程站点(我将调用SiteB)的Web服务器上运行一个PHP脚本,该脚本连接到远程位置的MySql服务器(我将称为站点A)。 现在,站点A的SQL服务器有两个用户,一个名为“usr'@192.168.1.%”,用于从站点A的内部networking访问,另一个名为“usr'@client.siteB.com” 。 站点A的服务器位于路由器的后面,并将端口3306上的所有TCP和UDPstream量转发到192.168.1.12(位于站点A的MySQL服务器的本地IP)。 站点A具有dynamicIP,所有对SQL服务器的引用都是通过主机名启动的(我们将调用server.siteA.com)。 站点B确实有一个静态的外部IP,但是所有进入的SQL连接只能通过主机名来引用,为什么SQL用户是'usr'@client.siteB.com'。 我遇到的问题是,每当我从网站B上的Web服务器运行PHP脚本,我得到以下错误: Access denied for user 'usr'@'client.siteB.com' (using password: NO) 它也引用了一条线,它是: $this->MCdbConnection = mysql_connect($this->MySQLhost, $this->MySQLuser, $this->MySQLpassword); 所以,正如你所看到的,我传递了一个密码。 最奇怪的部分是,通过在Site A的本地networking上运行相同的脚本,并且只将variables$ MySQLhost从server.siteA.com更改为192.168.1.7,脚本正常工作,并且连接并select并插入数据。 像这样的错误通常会让我觉得这是一个用户名问题,但是两个MySQL用户('usr'@192.168.1.%'和'usr'@client.siteB.com')是完全相同的,相同的密码和特权(仅限SELECT,INSERT和UPDATE)。 当我放弃用户'usr'@192.168.1.%'时,在尝试通过MySQL Workbench和站点A的本地networking上另一台机器的命令行客户端进行连接时,也出现同样的错误。 所有的迹象都指向缺less,不好或authentication不足的用户,但是我知道用户在那里,并且它具有适当的权限,唯一让我怀疑的是它使用主机名而不是IP地址。 我也已经validation,我在SiteA上的MySQL服务器上设置了以下IPTables规则: -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 我也可以通过PHP在Site B的同一台服务器上运行类似的mysql连接,但都连接到localhost。 另外,为了好的措施,SiteA的my.cnf中的SQL服务器: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is […]

如何完全禁用Mysqli

看来新的黑客工具refref已经启动了,显然它滥用了mysqli扩展中的一个bug。 现在我根本不使用mysqli来处理我的网站,所以我认为最好的办法就是完全禁用mysqli。 这些是我在我的php.ini中设置的设置。 有没有办法可以完全禁用mysqli与重新编译PHP? ;extension=php_mysqli.dll [MySQLi] mysqli.max_persistent = -1 ;mysqli.allow_local_infile = On mysqli.allow_persistent = On mysqli.max_links = -1 mysqli.cache_size = 2000 mysqli.default_port = 3306 mysqli.default_socket = mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off

nginx重写规则来replace.php结尾符合/

基本上,我想要“.php”replace为“/”。 我试图把我的规则放在fastcgi所在的同一个位置。 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; rewrite ^(.+)\.php$ /$1; } 但是,当我用这些设置重新启动nginx时,它给了我一个500内部服务器错误,我什至不能让服务器显示任何东西。 这是因为快速CGI? 我该如何解决这个问题? 我的系统:nginx / php5-fpm / apc / php5-memcache / Ubuntu 10.10