Articles of PHP

php.ini似乎完全被忽略

我正在Dreamhost VPS上工作,所以我不知道这是否与此有关: php.ini文件中的include_path条目似乎完全被忽略。 默认情况下,有几个php.ini文件分散在一起,但是在确定include_path值时似乎没有一个文件被使用。 包括phpinfo()表示正在读取的文件(并且据我所知,没有其他文件覆盖它)。 我可以完全删除 php.ini文件,并且包含path不会更改。 当我运行一个web请求时,它总是等于.:/usr/local/lib/php:/user/[username]/pear 。 它应该是.:/usr/local/lib/php:/usr/local/php5/lib/pear 。 /用户甚至不是服务器上的目录 。 这是/家。 和phpinfo()打印出不同的include_path取决于我是否从命令行(它工作正常)或通过Web请求(它返回上述)调用它。 真正奇怪的是,当我刷新为正确的值时, phpinfo()所示的包含path有时会随机更改 ,但再次刷新会将其重置为旧的错误值。 所以呢?

在CentOS 6上安装旧版本的PHP

我正试图在CentOS机器上安装PHP 5.2.17。 有问题,因为我过去只用过yum 。 我有文件下载和解压…不清楚我如何需要./configure之前使用make和make install 。 更新:我从一个新的云实例安装PHP 5.2.17时得到这个消息: # rpm -ivh php-5.2.17-1.x86_64.rpm error: Failed dependencies: libaspell.so.15()(64bit) is needed by php-5.2.17-1.x86_64 libcrypto.so.6()(64bit) is needed by php-5.2.17-1.x86_64 libcurl.so.3()(64bit) is needed by php-5.2.17-1.x86_64 libpspell.so.15()(64bit) is needed by php-5.2.17-1.x86_64 libssl.so.6()(64bit) is needed by php-5.2.17-1.x86_64 php-cli = 5.2.17-1 is needed by php-5.2.17-1.x86_64 我最终在这个实例上安装了PHP 5.3,这解决了上面的一些问题。 但是现在我正在与php-cli和php-common一起失败。 有任何想法吗?

如何连接到基于中国的Linux服务器?

这正如标题所述。 我如何连接/访问位于中国的networking/数据库服务器。 操作系统:RedHat 6.0 Websever:Apache 2.2 数据库:MySQL 5.1 服务器脚本语言:PHP 5.3 对于初学者,我已经尝试了ping web服务器和数据库服务器的ip地址。 100%发送,100%的损失。 我听说这可能是由于中国的防火墙,但我不确定。 有人有主意吗? 请分享〜谢谢:) 做了一个tracert .. 20跳..它看起来不那么糟糕.. 1 1 ms 1 ms 1 ms menu <my ip address> 2 11 ms 9 ms 9 ms bb116-14-180-1.singnet.com.sg [116.14.180.1] 3 92 ms 9 ms 9 ms 202.166.121.41 4 9 ms 9 ms 9 ms xe-7-1-0-3700.sherry.singnet.com.sg […]

为什么我的PHP5-FPM池每隔几个月就会神秘地消失? (Ubuntu 11.10,PHP 5.3.6)

我有一个系统,每个用户(大约20)获得自己的nginx实例和他们自己的PHP5-FPM小stream程池。 前端nginx实例将请求代理到合适的nginx实例,然后将其发送到PHP5-FPM或自己提供服务。 奇怪的是,每隔几个月(一个几个月前,一个今天上午六点半),池都会退出,而不会写入任何configuration为写入的php5-fpm.log文件。 (前端然后开始返回502错误,因为它不能得到请求给PHP工作者。) 我正在使用Ubuntu 11.10和PHP 5.3.6,与默认软件包有一点不同:我已经更改了cron作业的语法,以基于ServerFault上的这个答案来清理旧的会话。 新的语法是: 09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -amin +$(/usr/lib/php5/maxlifetime) -delete 我已经在那个时候检查了系统日志,当时唯一的活动是cron在6:25 AMlogging命令: Feb 10 06:25:01 peninsula CRON[31060]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts –report […]

loggingPHP(fcgid)请求与静态分开

使用通过mod_fcgid运行Apache和PHP的服务器,我希望将所有由PHP处理的请求logging到一个单独的文件中,以便更好地了解哪些请求正在通过PHP进行处理,而不是直接通过文件系统进行处理。 这是一个在.htaccess中有一些相当复杂的重写规则的网站,它通过mod_rewrite将caching的PHP请求转换成静态文件请求,所以caching的请求甚至不会触及PHP子系统。 因此,我想确保我所做的任何日志自定义都不会被mod_rewrite魔法抛弃。 仅仅因为请求URI以.php结尾,并不意味着请求最终会被PHP处理。 我需要基于所有重写规则应用后发生的任何事情。

Apaches似乎没有被closuresbuild立TCP连接

我试图find一个干草堆型的问题。 无法在testing服务器上重新创build它。 症状是遗留在ESTABLISHED状态的TCP连接,因此没有被closures。 环境是CentOS上的PHP / Apache / Postgresql 在正常操作下,ESTAB数据库连接数在20以下,而活动的HTTPD进程可以攀升到400的范围。 在故障情况下,ESTAB数据库连接峰值达到configuration的限制值1000,而HTTPD处理计数不会发生显着变化 要确认TCP连接与HTTPD相关,我使用了netstat -nop,然后计算build立到数据库的数量。 同时我用ps -ef来查看活动HTTPD的数量 我还没有能够赶上失败,但还没有尝试对HTTPD进行分析。 对我来说,TCP连接应该在HTTPD退出的情况下结束。 我研究过TPC孤儿,但似乎只适用于连接尝试closures。 日志文件似乎没有任何与此问题相关的活动。 我正在设定较高的日志级别,以查看更详细的信息是否会给我一些线索。 当拥有进程消失时,是否有其他人进入TCP连接,不会closures?

从漏洞保护PHPnetworking服务器?

我们正在linux apache web服务器上运行一个PHP应用程序。 我们如何保护服务器,所以如果有人在我们的应用程序中发现一个漏洞,他们只能访问应用程序(www文件夹内的文件),而不是服务器的其余部分? 如何确保运行如下命令:exec('/ usr / sbin / adduser -p password test') 读configuration文件,日志文件呢? /雅各布

优化Web服务器(apache2 + nginx + memcached + eaccelerator)为高负载沉重的应用程序

我有一个服务器(Apache2 + nginx作为反向代理,memcachedcaching和eaccelerator)。 该应用程序是Magento – 这是非常沉重的,由于高模块化和大量的PHP文件(5000-10000 +)。 软件版本: 服务器版本:Apache / 2.2.16(Debian) 服务器内置:Sep 25 2011 22:18:56 PHP 5.3.3-7 + squeeze3与Suhosin-Patch(cli) memcached STAT版本1.4.5(不是PHP模块) eaccelerator php模块0.9.6.1 中央处理器: root @ grandpa:〜#cat / proc / cpuinfo 处理器:0 vendor_id:GenuineIntel CPU系列:15 型号:2 型号名称:Intel(R)Pentium(R)4 CPU 2.40GHz 步骤:7 CPU MHz:2399.701 caching大小:512 KB fdiv_bug:不 hlt_bug:不 f00f_bug:不 coma_bug:不 fpu:是的 fpu_exception:是的 cpuid等级:2 wp:是的 flags:fpu vme de pse […]

Apache作为Mongrel的代理。 PHP不parsing

我已经定义了下面的configuration来代理Apachestream量到Mongrel来运行Redmine。 在这一点上,所有的PHP脚本现在都被浏览器下载,而不是被parsing。 一旦我删除这个configuration,每一件事情都会恢复正常。 有什么我可能会丢失或有一个错过configuration? 不幸的是,在apache error_log和php_error.log都没有错误。 #define mongrel cluster <proxy balancer://mongrelcluster> BalancerMember http://127.0.0.1:81 </proxy> #forward requests to mongrel cluster <virtualhost *:80> ServerName domain.com ServerAlias host.domain.com ServerAlias <server ip> ProxyPreserveHost on ProxyPass / balancer://mongrelcluster/ ProxyPassReverse / balancer://mongrelcluster/ </virtualhost>

nginx服务.php作为静态文件

好吧,再次显然是一个完全荒谬的问题,我似乎无法弄清楚。 nginx保持服务我的.php文件作为静态文件。 我已经通过ubuntu上的仓库安装了nginx。 我已经安装了php5-fpm(没有configuration改变),都已经重新启动。 我所拥有的设置是尽可能与我的笔记本电脑上的设置相同,并在那里运行。 我甚至设置了像笔记本电脑一样的文件权限,但仍然无济于事。 所以这里是我的网站可用/默认文件 server { #listen 80 default; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /home/johnny/*****; #replaced for privacy's sake index index.html index.htm; expires 0; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt […]