如何在 PHP CGI 上检查 mod_rewrite
Posted
技术标签:
【中文标题】如何在 PHP CGI 上检查 mod_rewrite【英文标题】:How to check for mod_rewrite on PHP CGI 【发布时间】:2013-08-21 00:52:21 【问题描述】:我在共享主机上,php 被安装为 CGI 脚本,这就是我无法找到是否启用 mod_rewrite 的所有问题
Note: I don't have any root level access so i can't much do with Shell.
我尝试了以下方法: 1) 签入phpinfo(),我知道这是在 PHP-CGI 中寻找的错误位置。
2) 我尝试从 agi 在 PHP-CGI 中不起作用的 apache_get_modules 获取它:( 3) 我试过了:
if (strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false)
// mod_rewrite is enabled
这是询问 apache 的路径,我没有此信息,SHELL 无法回复我,$_SERVER 什么也没有。
4) 我在 .htaccess 中检查了RewriteEngine On
,之后我的网站抛出 500 Internal server error 可能是因为 RewriteEngine 不存在,但我需要写给别人看。
任何机构都知道如何检查是否完成。
谢谢
【问题讨论】:
【参考方案1】:使用 PHP CGI 并没有简单的方法来确定服务器上的 mod_rewrite 是否可用。
因此,您需要通过对服务器进行测试调用来找出它。此方法可以使用以下步骤,
在服务器上创建一个名为mod_rewrite_test
的目录。
在这个目录下添加.htaccess
文件,代码如下,
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /mod_rewrite_test
RewriteRule .* mod_rewrite_test.txt
</IfModule>
一个。第一行告诉 apache 只有在 mod_rewrite 可用时才执行下面的代码,
湾。第二行启用重写引擎,
C。第三行设置来自DOCUMENT_ROOT
的重写基本目录路径
d。第四行将mod_rewrite_test.txt
文件的内容返回给发送到mod_rewrite_test
目录的任何请求。
在同一目录中创建一个名为 mod_rewrite_test.txt
的文件。在这个文件中写入ok
并保存。
现在,在你的 php 脚本中使用CURL
,调用类似的 URL,
http://www.your-domain.com/mod_rewrite_test/test.php 并检查响应。
所以,根据我们的.htaccess
代码,如果 mod_rewrite 处于活动状态并在服务器上工作,
即使 test.php 文件不存在,它也会返回 mod_rewrite_test.txt
文件的内容,即 ok
。
否则会返回 404 - Page not found 错误。
【讨论】:
【参考方案2】:要检查 mod_rewrite 模块是否启用,请在服务器的根文件夹中创建一个新的 php 文件。输入以下内容
echo phpinfo();
并在浏览器中访问文件。
【讨论】:
以上是关于如何在 PHP CGI 上检查 mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Centos 7 上将 php 从 cgi-fcg 更改为 php cli
linux服务器上运行PHP,除了PHP-FPM还有其他的方式吗
什么是CGI,FastCGI,PHP-CGI,PHP-FPM,Spawn-FCGI
如何检查 Perl-CGI 应用程序中的所有错误(例如,使用 Perl 编译器或类似 lint 的工具检查,免费开源?)