我有我的.htaccess文件设置为以下内容: Header set MyHeader "I'm Set!" 如果我转到没有默认索引文件的目录( http://example.com/test/ ),并查看networking活动(在这种情况下,使用Chrome),我可以看到标题正在发送。 如果我去一个PHP文件( http://example.com/test/test.php ),头不会被发送。 我已经创build了一个index.html(简单地把<pre>Hi作为内容)并发送出去。 我将文件名更改为.php ,没有标题。 如果我更改orignal test.php到test.html ,它会输出垃圾代码,并发送头文件。 如果我将test.php更改为test.png ,我会得到一个破碎的图标,然后发送标题。 因此,如果没有在MIMEtypes和文件扩展名方面进行超出上述testing的话,那么只会出现.php文件(合法的或其他),或者设置为不具有.htaccess规则,或者特别指定mod_headers指令。 但我不知道如何testing这个,因为它是一个共享服务器,所以我没有httpd.conf访问权限。 任何想法,为什么Apache会跳过发送头文件的PHP文件? 我也试过: <FilesMatch "\.(php)$"> Header set MyHeader "I'm Set!" </FilesMatch>
我想在我的SL6.4(RHEL 6.4重build)Web服务器上划分不同的PHP应用程序,以便它们不能访问彼此的数据。 SELinux似乎可以做到这一点,但我不确定细节。 我的问题有两个部分: SElinux如何使用mod_phppipe理在Apache进程中运行的PHP脚本? 当运行PHP脚本时,进程是否以某种方式进入脚本上下文,还是只有当脚本通过CGI或FastCGI运行在进程外时才能工作? 如果它转换到一个脚本上下文来运行PHP脚本,是什么让PHP的错误触发转换回主要的httpd上下文? 如果我需要一个备用的PHP部署方法,这将是很好的知道。 我怎样才能分离脚本/应用程序,例如TinyTinyRSS不能访问OpenCloud拥有的东西? 看起来我应该可以通过closureshttpd_unified并提供单独的httpd_ttrss_*和httpd_opencloud_*上下文来实现这一点,并行于httpd_user_foo和httpd_sys_foo 。 考虑到我可以使用的应用程序的数量,我甚至可以使用没有新上下文的sys / user区分。 但是我还没有find关于什么closureshttpd_unified的含义的文档,或者如何设置不同的HTTP上下文。 特别是用PHP脚本通过mod_php运行。 我很好地创build了新的SELinux策略模块,但希望一些文档指向我需要做的新策略,以及如何使它与SELinux目标策略很好地集成。 如果试图用SELinux来完成这种分离是一个失败的原因,我需要在不同的上下文中分别启动不同的httpd,甚至可能是LXC容器,这也是一个有用的答案。
我有一个PHP脚本设置,只要在网站上执行操作就发出cURL请求。 问题在于,无论何时执行操作,信息都会被POST两次。 我需要计算一下,如果这是我的一个问题(cURL正在运行两次)或者它正在发送的URL正在做两次。 我想最好的办法是从服务器查看传出的http POST请求。 这是最好的select吗? 如果是这样,我该怎么办呢?
据Hostgator上的Linuxpipe理员介绍: 使用安装了APC的PHP 5.3并不需要,因为PHP 5.3已经有了APC在其中解决的改进。 这种说法是否准确? 安装APC(可选PHPcaching)是否可以提高PHP 5.3的性能? 我对这个声明提出了质疑,而另外一个pipe理员则通过以下方式进行辩护 我们高层pipe理员的官方话语是避免APC,因为PHP 5.3+已经比以前的版本有所改进,因此APC可能会变得多余甚至冲突 我在这里被扔在这里或者这个陈述是否有效 ? 与Hostgator讨论了这个问题,关于在其7级 VPS上安装APC。
我想问你一些你知道的PHP / Apacheconfiguration方法,它们的优缺点。 我会开始自己: —————- PHP作为Apache模块 —————- 优点 :速度很好,因为你不需要每次启动exe,尤其是在mpm-worker模式下。 您也可以在APC或eAccelerator这种模式下使用各种PHP加速器 。 缺点 :如果你在mpm-worker模式下运行apache,你可能会遇到稳定性问题,因为任何php脚本中的每一个小故障都将导致整个apache进程的线程池不稳定。 在这种模式下,所有的脚本都代表apache用户执行。 这对安全性不利。 mpm-workerconfiguration要求以线程安全模式编译PHP。 至lessCentOS和RedHat默认存储库没有线程安全的PHP版本,所以在这些操作系统上,您至less需要自己编译PHP(有一种方法可以激活Apache上的worker mpm)。 线程安全的PHP二进制文件的使用被认为是实验性的和不稳定的。 此外,许多PHP扩展不支持线程安全模式,或者在线程安全模式下未经过良好testing。 —————- PHP作为CGI —————- 这似乎是最慢的默认configuration,似乎是一个“con”本身;) —————- PHP作为CGI通过mod_suphp —————- 优点 :suphp允许您代表脚本文件所有者执行php scipts。 这样你可以安全地在同一台机器上分离不同的网站。 另外,suphp允许为每个虚拟主机使用不同的php.ini文件。 缺点 :CGI模式下的PHP意味着更低的性能。 在这种模式下,你不能使用像APC这样的PHP加速器,因为每当新进程产生处理脚本的时候,渲染前一个进程的caching就没用了。 顺便说一句,你知道在这个configuration中应用某些加速器的方式吗? 我听说有关使用PHP的字节码cachingshm的东西。 此外,您不能在此模式下通过.htaccess文件configurationPHP。 如果您需要通过.htaccess(php_value / php_flag指令)设置各种脚本选项,您将需要安装P ECL htscanner 。 —————- 通过suexec作为CGI的PHP —————- 这个configuration看起来和suphp一样,但是我听说它比较慢,不太安全。 几乎相同的优点和缺点适用。 —————- PHP作为FastCGI —————- 优点 :FastCGI标准允许单个php进程在php进程死亡之前处理几个脚本。 这样你就可以获得性能,因为不需要为每个脚本启动新的php进程。 […]
当你configurationPHP时,什么是–enable-zend-multibyte选项?
如何在这些forms的url的MVC系统强制通过一个单一的index.php文件的所有请求? http://www.example.com/foo/bar/baz http://www.example.com/goo/car/caz/SEO-friendly-name-of-the-object http://www.example.com/hey/you 编辑:当我尝试下面的重写规则,我得到这个错误: [error] [client 127.0.0.1] Invalid URI in request GET / HTTP/1.1 [error] [client 127.0.0.1] Invalid URI in request GET /abc HTTP/1.1 编辑:哦,这是/index.php的完整内容。 当我删除重写规则时,它输出“/”或“/index.php”,或者我得到一个404其他任何东西。 <?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?> 求解:我在重写规则中的index.php前面添加了一个/然后它工作: 重新求解:结果只是因为我正在运行2.2.4。 当我升级到2.2.11时,/不再需要。
为了testing我的PHP项目的错误,我通常使用这个命令: find ./ -type f -name \*.php -exec php -l '{}' \; | grep -v "No syntax errors detected" 我想扩展部分php -l '{}' \; 有一些参数,所以它将使用自定义的error_reporting级别,而不是在php.ini中定义的级别。 这可能吗? (我知道这个问题在某种程度上与编码有关,另一方面是shell命令,如果你认为它应该在stackoverflow上更好,那么可以随意移动它,但我不确定问题在哪里。
我将Nginx 1.2.4与PHP-FPM 5.4.8结合使用,并使用fastcgi pass来尝试将自定义parameter passing给PHP 。 以下是我迄今为止发现的选项: 使用env指令在nginx设置一个环境variables,并从PHP获取getenv()或$_ENV 。 问题是env只在main上下文中运行,而我需要在server上下文中设置参数。 使用fastcgi_param指令为它devise的。 我试过用fastcgi_param改变一些参数的值,但是不成功: nginx的: fastcgi_param PATH_INFO "/var/tmp"; PHP: 我检查了所有可以find的预定义数组: echo '<pre>'; echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS); echo "\n".'$_SERVER'."\n"; var_dump($_SERVER); echo "\n".'$_GET'."\n"; var_dump($_GET); echo "\n".'$_POST'."\n"; var_dump($_POST); echo "\n".'$_FILES'."\n"; var_dump($_FILES); echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST); echo "\n".'$_SESSION'."\n"; var_dump($_SESSION); echo "\n".'$_ENV'."\n"; var_dump($_ENV); echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE); echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg); echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA); echo "\n".'$http_response_header'."\n"; […]
在过去的几天中,Apache已经失去控制,并使MySQL崩溃了两次。 这一切都开始时,我迁移了一个WordPress的网站,其中还包含一个phpbb论坛。 我不是非常有经验的服务器pipe理员,所以我很难找出是什么原因造成的问题。 当我注意到mysql已经closures时,我跑了TOP,看到我的系统负载峰值达到了98.00。 服务器运行10个V-HOSTS,所有这些都可以接收到一定数量的stream量,所以我显然看到很多apache-2进程在运行。 高服务器负载持续10分钟,然后恢复到正常状态。 在这一点上,我没有看到networkingstream量的高峰。 不幸的是,mysql错误日志logging被禁用(现在重新启用),所以没有线索。 但我很确定这是因为Apache耗用所有资源,所以mysql进程ID被杀死。 我的问题是: 下一次发生这种情况 – 如何识别导致系统负载峰值的原因? 难道这是一个疯狂的PHP脚本? 这可能是一个ddos攻击? 有没有办法自动重新启动的时候崩溃的MySQL? 我现在已经安装了htop 。 这可能比top更有用吗? 在这里我的服务器统计: m1.xlarge (8 ECUs, 4 vCPUs, 15 GiB memory, 4 x 420 GiB Storage Capacity) Ubuntu Server 12.04.3 LTS 提前致谢!