我正在尝试使用,如果我不使用重写规则为我的URL. 问题1:mod_rewrite 在浏览器中调用此功能将有效: http://subdomain.domain.de/image.php 这将给我404: http://subdomain.domain.de/rewrittenImageUrl 重写规则正常工作. 404错误由XsendFile模块触发. 如果我在htaccess中的规则中添加" r"( comestion )它将再次起作用,因为我被重定向到上面给出的第一个地址.但是重定向不是我想要的. 我还关注这篇文章关于Symlinks只要我使用使用getEnv('document_root')生成的绝对路径,就无法成为我的帖子的解决方案?这条路不应该使用任何符号链接,是吗?还是我现在缺少一些东西? 问题2:CGI 如果我将PHP模式切换到CGI版本,我将获得0个字节文件.这似乎与服务器会做出反应相同,而无需安装XSendFile.
以下是关于 cgi 的编程技术问答
在将环境变量传递给它后,我需要致电PHP-CGI. 这些是环境变量. REDIRECT_STATUS=true REQUEST_METHOD=GET program name ,但它一直给我这个回应: 'REDIRECT_STATUS' is not recognized as an internal or external command, operable program or batch file. 我正在使用Windows 10.有人知道如何在CMD中复制它. 解决方案 定义两个环境变量需要三个命令行,然后在Windows命令行环境中运行程序: set "REDIRECT_STATUS=true" set "REQUEST_METHOD=GET" "program name" 设置环境变量的命令是 set .在命令提示符窗口set /?上运行此命令. 也可以使用操作员&在一个命令行上运行所有三个命令. set "REDIRECT_
更新: 此问题是由服务器请求在脚本完成之前的时间出现的.* 我在共享灯主机(几乎是Freespeech.net)上运行旧代码,最近我添加了一个拒绝在生产中工作的新脚本. 我的apache错误日志显示消息End of script output before headers: switch.php,我在尝试使用Web客户端触发脚本时获得了500个状态. 根据其他Stackoverflow帖子,此错误消息通常是由于文件权限错误所致.但是,新脚本上的文件权限与其他所有文件相同. 这是相关文件权限: -rw-rw-r-- 1 235430 235430 1655 Jul 6 18:05 switch.php drwxrwxr-x 2 235430 235430 18 Jul 1 21:05 auth/ -rw-rw-r-- 1 235430 235430 13 Aug 24 2015 auth/.htaccess -rw-rw
我正在尝试在MacBook(Yosemite 10.9.3)上安装PHP-CGI,因为当我尝试在浏览器中打开东西时,PHPSTORM IDE一直回到我"找不到PHP-CGI".我尝试使用较新版本的PHP解释器,因为当前版本为5.4.但是我只能在php.net站点中找到包裹,但我不知道如何安装它.我还尝试下载Homebrew,但再次不知道如何开始.我尝试使用MacPort使用此行安装FastCGI: sudo端口安装php5 +fastcgi ,但它返回此: ---> Dependencies to be installed: autoconf213 gawk gettext expat libiconv ncurses readline m4 perl5 perl5.16 gdbm bzip2 gsed libtool libxml2 xz zlib mhash pcre libedit pkgconfig ---> Fetching archive for expat
我和我的朋友正在为一系列游戏创建一个日志解析器.我们已经用PHP/MySQL编写了前端(Web)和Perl中的解析器(当然也使用MySQL).现在,我们有问题要进行这两个进行交流. 我们不做的就是这样:一个在线管理页面,您的按钮"解析".当您单击此时,Perl脚本应启动.例如" exec(" perl/home/www/init.pm -f game_mp.log"). 这可能吗?请记住,这很容易设置. 我们已经尝试了从系统/执行到.htaccess的所有内容,但似乎没有任何操作.根本不工作. 建议? laka =) 解决方案 我很遗憾地说没有简单的方法来设置此设置.不同的服务器带有不同的默认Apache配置. 您可能想做的是在服务器配置,虚拟主机配置,目录配置或(如果正确设置)中添加以下行,.htaccess. AddHandler cgi-script .cgi .pl .pm 您的用户还需要适当地chmod和Chown.
获取HTTP认证的用户名的最佳方法是确保在不同的Web服务器(Apache,iis,nginx等)上的全部便携性的最佳方法? ? 我的理解是$_SERVER['REMOTE_USER']是CGI标准的标准,但是可以肯定地假设所有Web服务器都支持这一点? 至少还有两个其他变体:apache上的$_SERVER['PHP_AUTH_USER']和$_SERVER['AUTH_USER']在IIS上.如果$_SERVER['REMOTE_USER']使用正确的变量,为什么存在这些特定于服务器的变体? 相关线程,仅涵盖IIS/ColdFusion,而不是 */php: auth_user和remote_user cgi变量之间的差异 解决方案 远程_user变量(对应于php中的$ _server ['remote_user'])是CGI 1.1标准,但是假设所有Web服务器都会支持它,甚至以相同的方式使用它.实际上,仅当身份验证方案是基本或消化时才相关,而在IIS
我正在尝试通过CGI脚本设置一个HTTP标头. in PHP: header('Content-Type: text/plain'); // or echo 'Content-Type: text/plain', "\r\n\r\n"; // as first line 或Go: fmt.Print("Content-Type: text/plain\r\n\r\n") // as first line 两者都对输出没有影响. 如何完成? 编辑 我还使用CGI软件包尝试了以下内容: package main import "fmt" import "os" import "net/http/cgi" func main() { r,e := cgi.Request() if e != nil { fmt.Println(e) os.Exit(200) } fmt.Prin
我在Mac OSX Yosemite 10.10上使用 phpstorm 9 ,当我尝试在浏览器中打开项目时,它会返回" 502 BAD GATEWAWAY"错误. 在phpstorm中,它说找不到php-cgi Please ensure that configured PHP interpreter built as CGI program (--enable-fastcgi was specified) 我在此问题,但这无济于事. 不幸的是我还不能发表评论,所以我已经创建了一个新问题. 如果有人可以提供帮助,我真的很感激. 谢谢. 解决方案 我用此解决方案解决了此问题 http://barratmp. blogspot.ru/2014/10/the-core-yosemite-php-version-is-5.html ,但我只安装php5.6 brew install homebrew/php/php56 安装后,将phpsto
我试图将环境变量从.htaccess传递到PHP.这在我的本地Wamp服务器上可以正常工作,但是在托管我的网站的服务器上,它无缘无故地失败. 这是我的测试配置: .htaccess: SetEnv TEST_VARIABLE test_value test.php:
getenv('TEST_VARIABLE') =
getenv('REDIRECT_TEST_VARIABLE') =
在我的本地服务器上,获得test.php正确返回: getenv('TEST_VARIABLE') = test_value getenv('REDIRECT_TEST_VARIABLE') = 但是在生产服务器上,它返回: getenv('TEST_V
mod_php和CGI PHP脚本有什么区别? 我的意思是,为什么使用MOD_PHP代替简单的PHP脚本,以CGIS运行? 谢谢 解决方案 使用CGI:Apache启动了PHP进程,正是PHP流程解释了PHP代码 - 不是Apache 本身. 从理论上讲,必须为每个请求创建一个独特的PHP过程 - 这使情况慢:Apache有更多的工作要做回答请求. (嗯,正如 @alreece45在评论中指出的那样,使用fastcgi可以更好地做到这一点) 当使用PHP作为Apache Module (mod_php或mod_php5)时,PHP解释器在Apache过程中是一种" 嵌入式":没有外部php过程. 这意味着: 没有叉子回答请求(更快) Apache和PHP之间的更好的交流 一般而言,我会说mod_php是使用最多的解决方案. 其他解决方案 普通CGI需要在请求时为每个请求催生过程. mod_php要求您使用肿的apache代替
注意:这也可能适合超级用户. 我以某种方式在带有Apache2 MPM ITK和Open_Basedir的共享主机上设置PHP 5.3.10,每个用户可能不会看到或更改另一个用户的文件.在Apache2 VHOST设置中,我添加了适当的条目以限制用户: AssignUserId userA userA php_admin_value open_basedir /home/userA/www/ php_admin_value upload_tmp_dir /home/userA/www/tmp/ php_admin_value session.save_path /home/userA/www/tmp/ SetEnv TMPDIR /home/userA/www/tmp/ 现在,第一行将Linux用户设置为用于Apache2的Linux用户,接下来的三行定义了基于
我多年来一直在使用PHP.最近,我遇到了许多论坛帖子,说 php已经过时,现代编程语言更容易,更安全等等. . 所以,我决定开始学习Python .由于我曾经使用PHP,因此我刚刚开始通过以下方式上传.htaccess文件来构建页面. addtype text/html py addhandler cgi-script .py 然后,我的示例页面看起来像: #!/usr/bin/python print "content-type: text/html\n\n" print "html tags, more stuff, etc." 这很好.但是,我在一篇文章中遇到了一条评论,说 cgi并不是使用python 的最佳方法.当然,它没有提及是最好的方法. 为什么使用CGI不是使用Python的最佳方法?什么是替代方案? 是否有一些完全其他方式可以建立一个简单的Python网站?我应该在.htaccess和.py文件外看一些完全不同的范式吗? 相
我正在尝试加快我的WordPress网站的速度,因为出于某种原因,加载页面平均需要5秒钟(显然太慢了).我已经将其跟踪到php-cgi.exe,却在大量的CPU时间内携带,但现在不知道如何弄清楚为什么或如何修复它.有什么想法我如何调试php-cgi.exe并弄清楚是什么放慢了? 解决方案 PHP本身绝对应该不是这样做.您确定它是PHP,而不是您正在运行的脚本? 尝试一个简单的Hello World脚本,看看您是否注意到相同的行为: 如果您这样做,请尝试从命令行调用它,看看您是否有相同的问题: php.exe helloworld.php 如果CLI版本执行良好,但基于Web的版本却没有,您可以开始挖掘Web服务器和PHP之间的麻烦. 最后,检查并确保破碎或错误配置的扩展名不会挂起.删除您不需要的所有扩展.如果您仍然有麻烦,请全部删除它们,然后将它们逐一添加回. 其他解决方案 切
我设置了用于LDAP身份验证的Nagvis和Nagios. 我在Nagvis中有一个监视点(链接),这将我带到了Nagios Core中的服务信息. 当我单击Nagvis中的链接到达Nagios时,我会收到以下错误: /var/log/httpd24/error_log: [cgi:error] [pid 25523] [client 155.157.39.194:23160] Premature end of script headers: status.cgi, referer: https://[EM Server FQDN]/nagios/cgi-bin/status.cgi?host=all 当我降落在下一页时,我会遇到一个内部服务器错误页面,该页面只告诉我咨询错误日志.点击F5或浏览器上的后退导航按钮可以解决问题. 当我用基本身份验证替换LDAP身份验证时,不会发生任何问题. 我的CGI文件具有适当的权限. 在LDAP身份验证的过程中,一定会丢失某些东西?
我想知道PHP如何处理文件上传. I'V 阅读 文件上传将分为上传结束后,块并将组装.是否有对这个事实的验证?这将有助于了解文件上传的处理和设置. MOD_PHP或CGI的处理是否相同? mod_php与apache绑在一起. CGI必须阅读流,然后做它的魔术. 此过程中的内存如何. 这是正确的吗? apache手柄 http request Apache通过CGI调用PHP并流式数据(管道) php在一定尺寸的块中拆分输入,以未达到内存限制 发现流端 php将拆分文件汇编为一个文件,并将删除拆分文件 有关文件上传的信息将保存到$ _FILE 解决方案 PHP确实在块中读取文件,但不会将它们写入单个文件,然后重新组合,它不断将它们写入相同的临时文件,这是您在$ _FIELS中获得的文件. MOD_PHP和CGI是相同的. 这是负责任的代码:
我需要定义一个名为SQLANY17的环境变量,并且该变量应在PHP中可用(即标准phpinfo()页中的"环境"下). PHP通过FastCGI执行,我正在运行CentOS 7 x64,Apache 2.4.6和PHP 5.5.30. 我已经编辑了/etc/httpd/conf.d/fcgid.conf它已经存在于我的分布中. 根据文档,可以使用fcggidinitialenitialenitialenv.initialenv.根据文档进行定义P> # ... FcgidInitialEnv SQLANY17 /opt/sqlanywhere17 但是,即使在完整的机器重新启动后,这也行不通.有任何想法吗?我敢肯定fcgid.conf被解析了,因为键入一些随机字符阻止Apache Server重新启动. 在我的设置nginx代理请求apache请求这是nginx.conf host examp
我需要采用简单的方法来允许最终用户从同一框上的Apache中的网页重新启动Tomcat. 我们正在尝试使我们的QC部门轻松将我们的WebApp的新版本部署到Apache.我们正在使用Samba,但是我们需要一种简单的方法让他们在部署之前/之后停止/启动Tomcat服务器. 这仅适用于内部QC框.有现有的解决方案吗?还是编写一些快速的PHP应用程序来处理此操作会更容易? 解决方案 就像Skip所说的那样,但不要将CGI作为根.相反,请使用CGI调用sudo.您只能在Sudoers文件中授予Web服务器的权限. 我实际上在工作中做到了. CGI的相关部分看起来像这样: #!/usr/bin/perl use CGI; use IPC::Run3; my $CGI = new CGI; my $output; if (defined $CGI->param('go') && 'restart' eq $CGI->param('go')) { run3
更新: 绝望地,我在外壳中做了以下操作: REDIRECT_STATUS=true SCRIPT_FILENAME=/var/www/... REQUEST_METHOD=POST GATEWAY_INTERFACE=CGI/1.1 export REDIRECT_STATUS export SCRIPT_FILENAME export REQUEST_METHOD export GATEWAY_INTERFACE echo "test=1" | php-cgi ...仍然没有$_POST变量在此输出中显示: 我正在尝试创建一个与php-cgi二进制的小型网络服务器.但是,情况进展不佳. php-cgi二进制正确处理请求.当涉及到发布请求时,$_POST数组是空的,即使是在发布事物的情况下. 我已经检查了被送入php-cgi二进制的HTTP标头,它们确实包括邮政数据和Content-type: appl