【发布时间】:2014-06-16 14:23:32
【问题描述】:
我遇到了一个奇怪的问题。这是一个 3 步方案。
我有一个代码,可以从给定的 Youtube URL 从 Youtube 下载我的 ftp 目录中的视频
所以我有一个代码,它向 bash 脚本发出后台命令,该脚本在后台(在 ftp 目录上)下载大量视频
现在,当下载完成时,bash 脚本将调用一个 PHP 文件来更新 WordPress 中的条目。
问题 视频在我的 ftp 目录上下载良好。并且 bash 脚本也可以正常工作,直到调用我的 PHP 文件来更新数据库条目。
这是我的 bash 脚本代码
#!/bin/bash
wget -o $1 --output-document=$2 $3 &
wait
/usr/bin/php ../cron/vids_pending_download.php $4
exit
此脚本运行良好,并调用包含此代码的 PHP 文件。
require('../../wp-config.php');
require('../inc/inc_config.php');
$vid_key = trim($argv[1]);
#$vid_key = '123_video_key';
$sql_get_vids = "SELECT vid_id, vid_name, file_size, vid_usr FROM " . $wpdb->prefix . "video_table WHERE vid_name = '".$vid_key."' ";
$vid_info = $wpdb->get_row($sql_get_vids);
if ($vid_info != null) {
echo 'video found';
} else {
echo 'video not found';
}
现在的问题是,如果我为我的 sql 提供一个固定的 $vid_key,它就可以完美运行。但是,如果我从 bash 的数组中获取 $vid_key,它会带来空的结果集。但是,如果我打印 sql 并粘贴到 phpMyAdmin 中,它会带来很好的记录,这意味着记录就在那里。
寻求帮助。谢谢大家。
【问题讨论】:
-
所以 bash 将
$4传递给 php - 这是从哪里来的?您是否尝试将set -x添加到 bash 脚本以查看它实际执行的内容? -
好的。我不知道那 4 美元以及为什么它在那里。 bash 脚本是由我以前正在度假的开发人员创建的。
-
我认为您在谈论数组中的两个值。打印时,数组的值 1 显示正在调用的 php 文件名。和值 2 鞋 vid_key 变量的值。
-
$4是传递给 bash 脚本的第 4 个参数,在脚本(vid_key)中变为$arvg[1]。我的问题是您是否检查过 bash 脚本实际上传递了正确的值,或者通过 bash 中的echo/set -x和/或 php 中的echo?看起来 bash 脚本被错误地调用了。那叫什么?