我有一个在后台运行的PHP脚本,可以将图片发布到不同的网站。上传图片后,它会调用脚本运行如下:
$user_id = "77";
exec("/usr/bin/php5 upload_auto.php?user_id=$user_id");
在调用之后,它会运行如下代码:
<?php
$the_picture_id_to_check = $_GET['user_id'];
mysql_connect("localhost","********", "********") or die(mysql_error());
mysql_select_db(myflashp_pictures) or die (mysql_error());
require_once('connect/twitter_files/twitteroauth/twitteroauth.php');
require_once('connect/twitter_files/config.php');
?>
<!--- Upload Tumblr --->
<?php
$result_tumblr = mysql_query("SELECT * FROM upload_tumblr WHERE user_id=$the_picture_id_to_check");
$num_rows_find = mysql_num_rows($result_tumblr);
while($row_tumblr=mysql_fetch_array($result_tumblr)){
// Get Username
$the_id = "".$row_tumblr['id']."";
$picture_id = "".$row_tumblr['picture_id']."";
$picture_url = "".$row_tumblr['picture_url']."";
$user_id = "".$row_tumblr['user_id']."";
$caption = "".$row_tumblr['caption']."";
$album_id = "".$row_tumblr['album_id']."";
// Authorization info
$monday_result = mysql_query("SELECT * FROM photo_albums WHERE id='$album_id'");
$monday_query_row=mysql_fetch_array($monday_result);
$tumblr_id = $monday_query_row['tumblr_id'];
$monday_result2 = mysql_query("SELECT * FROM connections_tumblr WHERE id='$tumblr_id'");
$monday_query_row2 = mysql_fetch_array($monday_result2);
$tumblr_email = $monday_query_row2['email'];
$tumblr_password = $monday_query_row2['password'];
// Prepare POST request
$request_data = http_build_query(
array(
'email' => $tumblr_email,
'password' => $tumblr_password,
'type' => 'photo',
'source' => $picture_url,
'caption' => $caption,
'generator' => 'FlashPics iPhone App'
)
);
// Send the POST request (with cURL)
$c = curl_init('http://www.tumblr.com/api/write');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $request_data);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($c);
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
// Check for success
if ($status == 201) {
mysql_query("UPDATE pictures SET tumblr_id='$result' WHERE id='$picture_id'");
echo "Success! The new Tumblr post ID is $result.<br>\n";
mysql_query("DELETE FROM upload_tumblr WHERE id='$the_id'");
} else if ($status == 403) {
echo 'Bad email or password for Tumblr.';
} else if ($status == 400) {
echo "Error ($status): $result\n";
mysql_query("DELETE FROM upload_tumblr WHERE id='$the_id'");
} else {
echo "Error ($status): $result\n";
}
}
if ($num_rows_find == 0) {
echo "There's nothing to post to Tumblr.";
}
?>
<br /><br />
<!--- Upload Email --->
<?php
include_once('class.phpmailer.php');
$result_email = mysql_query("SELECT * FROM upload_email WHERE status='processing' AND user_id='$the_picture_id_to_check'");
$num_rows_find = mysql_num_rows($result_email);
mysql_query("UPDATE upload_email SET status='$num_rows_find' WHERE id='1'");
while($row_email=mysql_fetch_array($result_email)){
// Get Username
$to = "".$row_email['email']."";
$get_info_result = mysql_query("SELECT * FROM users WHERE id='".$row_email['user_id']."'");
$get_info_query_row = mysql_fetch_array($get_info_result);
$get_username = $get_info_query_row['username'];
$get_first_name = $get_info_query_row['first_name'];
$get_last_name = $get_info_query_row['last_name'];
$get_info_result = mysql_query("SELECT * FROM pictures WHERE id='".$row_email['picture_id']."'");
$get_info_query_row = mysql_fetch_array($get_info_result);
$get_caption = $get_info_query_row['caption'];
$get_picture_url = $get_info_query_row['long_url'];
$get_short_string = $get_info_query_row['short_string'];
if ($get_caption == "") {
$get_caption = "I have shared a FlashPic with you.";
}
$mail = new PHPMailer();
$mail->From = "share@myflashpics.com";
$mail->FromName = "FlashPics";
$mail->Subject = "$get_first_name $get_last_name has shared a FlashPic with you.";
$mail->IsHTML(true);
$mail->Body = "
<html><body style='margin: 0px; padding: 0px;'>
<div style='padding: 15px; width: 480px; font-family: Helvetica; margin: 10px; border: 1px solid #d7d7d7;'>
<div style='font-weight: bolder; font-size: 32px; margin: 8px 0px 20px 0px;'><font color='#353535'>Flash</font><font color='#f8bc49'>Pics</font></div>
<div style='font-size: 20px; color: #353535; font-weight: normal; text-transform: lowercase;'>$get_username</div>
<div style='margin-top: 15px; font-size: 14px; line-height: 18px;'>$get_caption<br>
<br>
<img src=$get_picture_url width='480'>
<br><br>
<a href='http://myflashpics.com/picture/$get_short_string' style='color: #000000; text-decoration: underline;'>view full size image</a><br>
<br>
Sincerely,<br>
The FlashPics Team</div>
</div>
</body></html>";
$mail->AltBody = "$get_username
$get_caption
http://myflashpics.com/picture/".$row_email['picture_id']."
Yours Truly,
The FlashPics Team";
$the_id = "".$row_email['id']."";
$pieces = explode(", ", "$to");
$one = $pieces['0'];
$two = $pieces['1'];
$three = $pieces['2'];
$four = $pieces['3'];
$five = $pieces['4'];
if ($one != "") {
$mail->AddBCC("$one");
}
if ($two != "") {
$mail->AddBCC("$two");
}
if ($three != "") {
$mail->AddBCC("$three");
}
if ($four != "") {
$mail->AddBCC("$four");
}
if ($five != "") {
$mail->AddBCC("$five");
}
if(!$mail->Send()) {
echo "Failed sending email to <b> $one, $two, $three, $four, $five</b>." . $mail->ErrorInfo;
mysql_query("UPDATE upload_email SET status='error' WHERE id='$the_id'");
} else {
echo "Sent email to <b> ".$row_email['email']."</b> successfully.<br>";
mysql_query("UPDATE upload_email SET status='sent' WHERE id='$the_id'");
}
}
if ($num_rows_find == 0) {
echo "There are no pictures to email out.";
}
?>
所以基本上只有某些部分可以使用(我没有发布我的所有代码)。我刚发布了什么不起作用。 但是如果我从浏览器手动运行它,所有部分都可以运行。如果你想看到我的php_info,我有here。
提前致谢,
库尔顿
PS:“不工作”,我的意思是没有任何反应,我看到没有错误
答案 0 :(得分:3)
从评论主题,我认为exec
无效。
尝试:
此外,因为它意味着在shell上运行,所以将参数更改为shell脚本的工作原理:
exec("/usr/bin/php5 /path/to/whatever/your/file/is/upload_auto.php $user_id");
注意强>
请参阅我的更改参数:
upload_auto.php?user_id=$user_id
到
upload_auto.php $user_id
shell脚本如何工作。
要获取该参数,您应该使用$argv
:
$user_id = $argv[1];
或者,为了能够在浏览器和shell上运行,请将其更改为:
$user_id = (php_sapi_name() == 'cli' && empty($_SERVER['REMOTE_ADDR'])) ? $argv[1] : $_GET['user_id'];
答案 1 :(得分:1)
您正在从命令行调用php脚本,但您正在尝试从$ _GET变量中获取值。它不会起作用。 尝试从argv [1]中获取值。 $ the_picture_id_to_check = argv [1];