【问题标题】:How to use pathinfo in php?如何在 php 中使用路径信息?
【发布时间】:2019-10-24 10:54:09
【问题描述】:

我正在编写如下所示的 php 代码,Line#A 在该代码上打印以下数组(如下所示 php 代码)。我的代码似乎没有进入 switch 语句。我不确定为什么。

我在 A 行添加了print_r($parts),以便打印 $parts 的值。

php代码:

<?php
    if (!empty($_POST['id']))
    {
    for($i=0; $i <count($mp4_files); $i++) {
    if($i == $_POST['id']) {
    $f = $mp4_files[$i];
    $parts = pathinfo($f);
    print_r($parts);                    // Line A
    switch ($parts['extension'])
    {
    echo "Hello World";                 // Line B
    case 'mp4' :
    $filePath = $src_dir . DS . $f;
    system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
    }
    }
    }
    }
?>

输出(线#A):

Array 
(
    [dirname]  => .
    [basename] => hello.mp4
    [extension] => mp4
    [filename] => hello
)

我在 B 行使用了echo "Hello World",但由于某些原因,它没有被打印并在控制台上抛出500 internal server error

问题陈述:

我想知道我应该在 php 代码中进行哪些更改,以便它进入 switch 语句。

【问题讨论】:

  • 出于调试目的:1echo "Hello World"; 移动到第一个案例中,然后添加一个default 案例,您将在其中打印出参数值。这将使您了解要切换的内容。 2 尝试只返回扩展名,因为这是您现在感兴趣的内容 => $parts = pathinfo( $f, PATHINFO_EXTENSION )。这将返回一个字符串。打印字符串,然后继续。

标签: php ffmpeg switch-statement http-status-code-500 pathinfo


【解决方案1】:

错误 500 是由 B 行的 echo "Hello World" 引起的,它超出了 mp4 的大小写。

你的 switch 语句应该是这样的。

switch ($parts['extension']) {
    case 'mp4':
        echo "hello world";
        $filePath = $src_dir . DS . $f;
        system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
        break;
}

【讨论】:

  • 我也试过了。它返回相同的错误
  • 尝试启用 php 错误报告,将其粘贴到脚本的开头。 ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);然后再次运行脚本,将错误信息粘贴到这里。
猜你喜欢
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多