Articles of PHP

Apache – 非常高的负载/带宽和不寻常的请求模式

我是一个Web开发人员,并有这个服务器被用作各种开发机器。 所以,我使用Apache的经验是,我可以摆弄,完成基本的东西/谷歌的东西,以获得我需要的答案。 在上个周末,我们在服务器上的负载大约是平均带宽使用量的1000倍。 我的Apache访问日志有类似于下面的行和行。 81.12.34.56 – – [30/Oct/2011:01:08:15 +0200] "GET /wp-content/uploads/2011/10/a.jpg HTTP/1.0" 200 1671717 "-" "-" 81.12.34.56 – – [30/Oct/2011:01:08:15 +0200] "GET /wp-content/uploads/2011/10/b.jpg HTTP/1.0" 200 2682375 "-" "-" 81.12.34.56 – – [30/Oct/2011:01:08:15 +0200] "GET /wp-content/uploads/2011/07/c.jpg HTTP/1.0" 200 1009591 "-" "-" 81.12.34.56 – – [30/Oct/2011:01:08:15 +0200] "GET /wp-content/uploads/photos/d.jpg HTTP/1.0" 200 365209 "-" "-" 81.12.34.56 – – […]

Apache权限问题

确定我所有的文件和文件夹被设置为vsftpd:nogroup的所有者。 FTP程序可以上传和创build,尽一切努力。 但是当我使用PHP命令mkdir时,即使创build它的文件夹设置为chmod 777,我也会得到权限拒绝。如果我将基础文件夹设置为用户www-data和组www数据,PHP mkdir将会工作。 但是,我无法使用FTP删除或上传到该文件夹​​。 / uploads是基础文件夹。 我使用PHP mkdir在那里创build一个目录: if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_REQUEST['clientID'] . '/video/')) { @mkdir($_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_REQUEST['clientID'] . '/video/', 0777); } 如果/ uploads是vsftpd:nogroup,那么PHP mkdir会给出一个Permission Denied错误。 如果/ uploads是www-data:www-data,那么PHP mkdir会工作,但是我不能继续在刚刚创build的那个文件夹中FTP任何东西。 如果/ uploads是vsftpd:www-data,那么PHP mkdir会给出一个Permission Denied错误。 我如何创build一个PHP目录,仍然可以通过FTP访问它?

删除特定的PHP会话

我使用PHP会话作为网站用户系统的重点。 作为网站的pipe理员,我想删除特定的会话来强制用户注销。 或者至less删除所有会话,以便每个人都必须再次login(例如,一个主要的网站更新)。 理想情况下,通过一个PHP命令,但如果是通过删除文件,我可以显然这样做与PHP文件命令。 我有共享Linux的networking托pipe(没有什么特别的,有一个cPanel接口)。 我看到这个问题PHP会话文件是否被删除? / tmp只有统计文件和一个空的pear文件夹。 在写这个我认为我最好检查phpinfo()。 session.save_path是/ tmp(local和master)。 我想找什么样的文件名?

Apache脚本执行时间太长后,Apache不响应

我们有一个使用Yii Framework构build的PHP应用程序,它连接到Oracle数据库,并运行在使用Zend Core For Oracleconfiguration的Apache上。 Apache还在另一个端口上运行另一个应用程序。 我们有一个页面,这使得一个复杂的查询到DB需要大约10分钟运行。 我们正在减less这个查询的时间,但现在这是一个问题。 问题是调用PHP页面后,没有其他页面响应,甚至没有查询数据库。 Apache运行的其他应用程序(不使用Yii并使用不同的数据库)也没有响应。 为什么发生这种情况? 即使一个仍在运行,Apache不能同时处理多个请求吗? 从Apache给出的错误如下,这应该是一个通用的消息与数据库通信失败时给出的错误: fcgi:无法从D:\ Programmi \ Zend \ Core读取响应对于Oracle \ bin \ php-cgi.exe 我们没有涉及很多默认的Apacheconfiguration,所以maxClients和ServerLimit应该设置为256(默认) 任何想法在哪里寻找问题?

lighttpd + php-cgi:如果php文件中有语法错误,内存疯狂地增加

我使用lighttpd作为networking服务器,模块mod_fastcgi打开。 所以我可以用lighttpd获取php file 。 这是我的configuration文件的一部分。 fastcgi.server =( ".php"=> ( ( "bin-path" => "/usr/local/webserver/php/bin/php-cgi", "socket" => "/data/online/webim/socket/php-fcgi.socket", "min-procs" => 100, "max-procs" => 100, "check-local" => "disable", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "10", "PHP_FCGI_MAX_REQUESTS" => "1000" ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" ) ) ) 有一次,我犯了一个错误。 syntax error留在php文件中。 然后,我发送了很多(10000)的请求到networking服务器。 很快,php-cgi使用的内存开始increase crazily地increase crazily […]

IIS7.5 PHP不会在子目录中logging错误

我正在使用win7,IIS7.5,PHP 5.2.17现在,我有一个PHP错误日志logging的问题:只要入口点(称为PHP文件)不在的子目录文档根目录。 (在这种情况下,显示错误显示错误,但不logging错误。) 任何想法如何解决?

安全担心IIS网站的访问权限 – 限制他们不能读取c:\等

我有一些关于我的IIS网站的安全问题。 从我们的服务器上的PHP文件(FastCGI),脚本能够读取我系统的根目录( c:\ ),但是甚至列出了c:\windows的内容。 更麻烦的是,我甚至可以在这样的根目录下创build目录: mkdir('c:\asdasd'); ,而且没有任何问题。 我甚至可以阅读其他网站的目录(所以实际上我可以从PHP脚本映射整个系统的目录树)。 我认为这是一个巨大的安全问题。 没有人应该能够读取或写入c:\或其他托pipe网站的内容。 我知道PHP中有open_basedir指令,但我认为设置这个指令并不能解决问题,因为我也可以使用任何其他服务器语言来访问相同的上述目录。 我的网站的目录树是这样的: c:\net\web\php\ |- website1 |- other |- htdocs |- website2 |- other |- htdocs |- website3 |- other |- htdocs |- … 网站的源文件在htdocs目录下,所以这是这些网站的“根目录”。 我只是想启用网站的第一个父目录的读/写权限,例如c:\net\web\php\website1 (例如“ c:\net\web\php\website1\other ”可能是写,但c:\net\web\php\不应该)。 我该如何限制访问? 谢谢!

FPM活动进程不断增长

最近,我不得不面对php-fpm问题,不断增加可用的活动进程。 它正在达到max_children,然后重新启动。 该图显示了来自三台服务器的池状态(循环余额)中的“活动进程”值。 configuration: pm.max_children = 100 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 2000 在凌晨1点,我将configuration更改为: pm.max_children = 500 pm.max_requests = 500 这个池服务约4k的需求/分钟(所有的服务器)。 我必须承认其他游泳池正常工作,相同的设置(最大的池服务〜12k的需求/分钟)。 什么可能是这样的行为的理由?

nginx如何处理大文件

我们在加载一个大约300KB大小的pdf文件时遇到了问题。 pdf由nginx提供。 每当我加载文件,它显示一个错误,说Failed to open pdf document ,但坠毁文件的大小只有32KB。 我已经仔细检查了两端的大小。 当我检查clicked_site(client_max_body_size) ,我已经将以下configuration添加到nginx.conf: http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; client_max_body_size 200M; client_body_buffer_size 50M; client_header_buffer_size 300K; large_client_header_buffers 2 1k; proxy_buffer_size 40k; proxy_buffers 4 32k; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; …….. …….. } 网站启用/默认: […]

检查cron是否运行并有回退

我写了一个实时的公交跟踪程序,每分钟运行一次cron来检查公交车的服务。 为了删除一些服务器资源,我将在PHPfog上创build一个实例,然后在那里执行它。 我的问题是什么是知道如果cron失败的最好方法,如果是的话,然后运行本地服务器副本作为备份?