我与多个用户运行一个Web服务器。 该机器提供基于Apache的虚拟主机给一群可以提供静态内容或使用PHP的用户。 没有其他forms的服务器端脚本可用。 以下是典型请求的处理方式: HTTPSstream量由Pound剥离SSL,作为反向代理,将请求转发给Varnish,Varnish也充当反向代理,最终将请求转发给Apache。 当HTTPSstream量到达Apache时,协议,端口和完整URL已经从https://example.com:443/更改为http://example.com:8443/ 。 这是Apache之前的所有代理的结果。 有没有一种方法可以欺骗PHP脚本,认为请求来自原始URL,端口和协议, 而无需修改PHP代码 ? 这一点非常重要,因为用户希望运行Joomla,WordPress以及其他基于PHP的CMS,这些CMS可以检测URL并为redirect,链接等造成麻烦。 我可以修补mod_php并从源代码构build它,并对我的特定场景进行必要的更改,但是有没有更好的方法来给PHP脚本伪造环境variables,也许通过php.ini中的某些设置?
我的应用程序似乎有memcached不停止的问题。 我使用PHP,并具有特定的键每小时后过期。 但是这些键和值不再被重新填充。 当我运行: /etc/init.d/memcached restart 我得到以下内容: Stopping memcached: [FAILED] Starting memcached: [ OK ] 我必须为memcached运行一个killall memcached memcached来停止。 然后我运行重启,一切都很好。 我不确定是什么原因造成这个问题,但我需要memcached每小时重新启动。 我应该在哪里找出是什么原因造成的呢?
我有一个python脚本chatserver.py包括: – #!/usr/bin/python from twisted.internet.protocol import Protocol, Factory from twisted.internet import reactor <SNIP> reactor.listenTCP(3800, factory) print "Server Started" reactor.run() 这将在端口3800上打开一个套接字,如果我从SSH启动,但是我想检查打开的端口,并且如果closures,请使用PHP重新打开,但似乎无法执行python脚本。 这是我现在通过PHP调用它的方式 function serverCheck() { $host = "MYHOST"; $port = 3800; $connection = @fsockopen($host, $port); if ( !is_resource($connection) ) { // port not open exec('/var/www/vhosts/httpdocs/chat/chatserver.py',$output); var_dump($output); if($connection) fclose($connection); } } 我已经尝试了很多我在search中find的东西,但是我似乎无法获取要执行的文件。 一个不错的人正在帮助我,但无法找出答案,所以redirect到这里。 我的文件是正确的chmod和function“serverCheck”100%被打,但python脚本似乎永远不会被执行!
我得到了一些相当严重的性能问题,我的plesk 11专用盒,它有8演出的内存,静态页面加载速度非常快,第一次的时间less于0.5秒,但dynamicPHP文件,包括只是一个PHP信息可以采取1(直接在httpd重启之后),第一个字节为10秒。 我一直在用WebPagetest.org测量性能 服务器运行1个站点,每月4000个访问者,不应该有任何实际的负载。 PHP作为CGI运行 inheritance人prefork的httpdconfiguration <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 1000 </IfModule> 此外,日志文件填充此 [Tue Apr 09 05:58:23 2013] [warn] mod_fcgid: process 4435 graceful kill fail, sending SIGKILL [Tue Apr 09 05:58:55 2013] [warn] mod_fcgid: process 4466 graceful kill fail, sending SIGKILL [Tue Apr 09 05:59:11 2013] […]
我怎样才能禁用input过滤? 这里是一个例子: echo "\$_GET: "; var_dump($_GET); echo "filter.default: "; var_dump(ini_get('filter.default')); echo "filter.default_flags: "; var_dump(ini_get('filter.default_flags')); echo "\nCurrent PHP version: " . phpversion() . "\n"; 当我用这个URLtesting它时: http://example.org/?text=<a href="http://example.org">…</a> : http://example.org/?text=<a href="http://example.org">…</a>代码生成这个: $_GET: array(1) { ["text"]=> string(38) "<a href=\"http://example.org\">…</a>" } filter.default: string(1) "0" filter.default_flags: bool(false) Current PHP version: 5.2.10-2ubuntu6.7 服务器信息: System Linux magentob.builder.hu 2.6.31-14-server #48-Ubuntu SMP Fri Oct […]
每20-30秒我的硬盘使用率达到100%(iostat)。 iotop显示[flush-8:0]在这段时间内正在使用99%的硬盘。 在HDD之间的使用率是1-10%。 iostat输出: 04/22/2013 08:58:44 AM 设备:rrqm / s wrqm / sr / sw / s rmb / s wmb / s avgrq-sz avgqu-sz await svctm%util sda 1.55 1188.88 3.43 569.93 0.03 6.88 24.69 0.25 0.43 0.12 7.15 04/22/2013 08:58:46 AM 设备:rrqm / s wrqm / sr / sw / s rmb / s […]
我正在迁移一台机器,并已经移动了几个最小stream量的WordPress网站(最大的网站每天获得约200个独特的用户)。 一切似乎工作正常,但稍后我再次加载它并在浏览器中得到“没有数据收到”。 打开PHP警告/错误消息然后,我看到数以百计的“无法为池分配内存”消息。 如果我重新启动Apache,站点再次运行一段时间,然后再次停止。 有几件事对我没有意义: Apache重启解决了这个问题 在其他网站的问题期间,同一服务器上的另一个WordPress网站继续正常工作 目前的php.ini有更多的内存分配比旧的(我移动了一些变化,但留下的内存在默认情况下,128 MB或东西,在旧的服务器上是16 MB) 在寻求帮助时,我看到了对APC的引用,但是我没有看到在这里使用APC的证据 我试过禁用所有的插件,但没有改变。 作为背景,这个迁移是Apache版本的1.x到2.x版本的变化,但在PHP版本中只是一个相对较小的版本。 我现在不知道该怎么做。 请帮助? Quinxy 这是我的PHP.ini,如果有帮助(评论剥离适合职位长度): [PHP] engine = On short_open_tag = On asp_tags = Off precision = 14 y2k_compliance = On output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = 100 allow_call_time_pass_reference = On safe_mode = Off safe_mode_gid = […]
我有一个服务器,通过cPanel添加6个IP地址。 我遇到了麻烦,限制了我的客户端可以在他们的PHP脚本中用作外出IP地址的IP地址。 其中一些正在运行代理并使用CURLOPT_INTERFACE从服务器IP地址切换到其他客户端的IP地址。 我不知道如何限制CURLOPT_INTERFACE只是服务器的IP地址或绑定到服务器+客户端的专用IP地址…
我有一个完全供内部使用的应用程序,但是我试图确保我的SQL基础覆盖了SQL注入。 除非有其他人有一些信息指向我,否则没有办法dynamic地指定列表中的列列表,而无需打开SQL注入的查询,因为准备好的语句bindparam不能用于指定列名称。 例如(不可能的,会抛出错误): SELECT :column_name FROM tablename WHERE other_column_name = :value 为了仍然dynamic允许调用列名,我直接必须传入一个variables(工作,但易受注入): SELECT $column_name FROM tablename WHERE other_column_name = :value 为了防止注入,我使用PHP的in_array函数针对表中所有列名的白名单检查$ column_name的值。 如果它在列表中,我继续查询,但如果不是,我会抛出一个exception。 由于在应用程序中有许多不同的地方需要这样的查询,所以我添加了一个函数给我的PDO包装器,以便使用information_schema数据库中的数据自动枚举这些列列表: public function schema_list($database_name = NULL, $table_name = NULL, $column_name = NULL) { $query = 'SELECT table_schema AS database_name, table_name, column_name FROM `information_schema`.`columns` WHERE table_schema = :database_name '; $parameters = array(); // […]
只是去检查我的网站之一,并被消息迎接:“CGIWrap错误:真正的UID不能改变!”。 通过SSH进来,并试图“PS X”这显示了吨只是“-f”和pathindex.php或一些其他的PHP文件的过程吨。 杀死所有进程后,一切恢复正常。 任何人都知道那是什么? Google根本没有帮助。