【发布时间】:2016-09-24 15:42:32
【问题描述】:
我正在使用这个脚本在 post.sh 文件中使用 curl 发布一些日期
#!/bin/sh
var1=`base64 javascript_100.file`
# post it 3 times
for i in `seq 1 3`; do
/usr/bin/curl -i --verbose -d "jobTexterea=$var1" http://my_server_address/target_page.php
done
我使用我的 Shell 执行 post.sh 文件没有任何问题,但是当我使用 shell_exec('sh /path_to_post_file/post.sh') 在我的 php 脚本中调用它时,我从我的 var_dump(shell_exec('sh /path_to_post_file/post.sh')); 收到此错误。
错误:() HTTP/1.1 302 发现日期:2016 年 9 月 24 日星期六 15:14:38 GMT 服务器:Apache/2.4.23 (Fedora) OpenSSL/1.0.2h-fips PHP/5.6.25 mod_perl/2.0 .9 Perl/v5.22.2 X-Powered-By:PHP/5.6.25 位置:http://my_server_ 地址/内容长度:401 内容类型:text/html; charset=UTF-8 发生 MySQL 错误。 您的查询:INSERT INTO jobsNum_pro_batch (
job_batch_id,jobs_in_batch,job_type) VALUES ('26','1','JavaScript')
post.sh 文件中的代码将信息发布到target_page.php,从而将所有内容放入数据库中的不同表中。问题是从 PHP 页面运行 shell_exec('sh /path_to_post_file/post.sh') 不会将任何信息上传到数据库中。但是,命令本身运行没有错误,我检查了它
<?php
if (shell_exec('sh /path_to_post_file/post.sh')){
echo "<b> shell_exec was executed </b><br>";
var_dump(shell_exec('sh /path_to_post_file/post.sh'));
} else {
echo "<b> shell_exec was not executed </b><br>";
}
?>
我收到消息 shell_exec 已执行
有人知道出了什么问题吗?
【问题讨论】:
-
您的脚本中有一个相对文件路径。在这两种情况下,您是否从同一目录运行它?
-
@Jean-FrançoisFabre 执行 shell_exec 的 PHP 脚本与 post.sh 文件位于不同的文件夹中。我在shell_exec命令中使用文件的完整路径/var/....../post.sh。
-
不确定,但在这种情况下,文件
javascript_100.file是否可以从不同的目录访问? -
javascript_100.file与post.sh文件位于同一文件夹中,因此不会出现任何复杂情况。我可以从 shell 本身执行post.sh文件,一切都会正常运行。 -
你的意思是这行得通?
cd /tmp; sh /path_to_post_file/post.sh?