Php 编辑到substr和strpos会导致错误500

Php 编辑到substr和strpos会导致错误500,php,substr,strpos,Php,Substr,Strpos,我试图对一段代码进行一些编辑,但当我这样做时,我得到了一个错误500。 对于这个例子,我们可以这样说 basename(__FILE__) 是my_filename.php 代码是: $HTTP_GET_VARS['feed_file'] = $_GET['feed_file'] = substr( basename(__FILE__), 3, strpos( basename(__FILE__), '.php') -3

我试图对一段代码进行一些编辑,但当我这样做时,我得到了一个错误500。 对于这个例子,我们可以这样说

basename(__FILE__)
是my_filename.php

代码是:

$HTTP_GET_VARS['feed_file'] = $_GET['feed_file'] 
= substr(
            basename(__FILE__),
            3,
            strpos( basename(__FILE__), '.php') -3
        );
$HTTP_GET_VARS['feed_file']将作为“filename”进行回显

现在,如果

basename(__FILE__) 
是aaa_filename.php吗 原始代码将$HTTP\u GET\u VARS['feed\u file']作为“\u filename”

我把密码改成

$HTTP_GET_VARS['export_feed'] = $_GET['export_feed'] 
= substr(
            basename(__FILE__),
            4,
            strpos( basename(__FILE__), '.php') -3
        );
$HTTP_GET_VARS['export_feed']现在作为“filename”回音

好的,我需要从字符串的末尾再丢失一个字符。我把-3改成-4,这样我就有了

$HTTP_GET_VARS['export_feed'] = $_GET['export_feed'] 
= substr(
            basename(__FILE__),
            4,
            strpos( basename(__FILE__), '.php') -4
        );
只是现在抛出了错误500。
把我弄糊涂了,因为我以为这将是一个简单的改变。有什么建议可以解释为什么我在更改字符串开头和结尾要删除的字符数时遇到问题吗?

我会使用
preg\u match
动态获取“filename”:

现在,
$name
只是“文件名”

除此之外,您自己共享的代码片段不会导致500服务器错误。可能存在多米诺效应,错误会在其他地方触发。了解如何查找错误日志以了解详细信息

最后,如果您继续使用当前方法,请不要硬编码偏移量(您的
-3
-4
)。而是像这样动态地计算它:

$basename = 'abcd_filename.php';

$pos_ = strpos($basename,'_') + 1;
$len  = strpos( $basename, '.php') - $pos_;
$name = substr($basename, $pos_, $len);

现在,
$name
是“文件名”

怎么办?(我也无法重现您遇到的问题。错误500是您检查服务器错误日志的提示。
$HTTP\u GET\u VARS
?您使用什么版本的PHP?您想实现什么?我认为有更好的方法从文件名中获取部件。@PaulCrovella已经检查过了。Apache日志中没有记录任何内容
$basename = 'abcd_filename.php';

$pos_ = strpos($basename,'_') + 1;
$len  = strpos( $basename, '.php') - $pos_;
$name = substr($basename, $pos_, $len);