2016-09-24 2 views
0

Я использую этот сценарий, чтобы опубликовать некоторые данные, используя скручивание в файле post.shРНР выполняет shell_exec команды, но ничего не делает

#!/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 

У меня нет никаких проблем, исполняющих пост .sh, используя мою оболочку, однако, когда я вызываю ее внутри своего php-скрипта, используя shell_exec('sh /path_to_post_file/post.sh') Я получаю эту ошибку от своего var_dump(shell_exec('sh /path_to_post_file/post.sh'));.

Error:() HTTP/1.1 302 Found Date: Sat, 24 Sep 2016 15:14:38 GMT Server: 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 Location: http://my_server_ ddress/ Content-Length: 401 Content-Type: text/html; charset=UTF-8 A MySQL error has occurred. Your Query: INSERT INTO jobsNum_pro_batch (job_batch_id , jobs_in_batch , job_type ) VALUES ('26' ,'1' ,'JavaScript')

Код в post.sh сообщений файла информация к target_page.php Wich ставит все содержимое в различные таблицы в базе данных. Дело в том, что никакая информация не загружается в базу данных с запуском shell_exec('sh /path_to_post_file/post.sh') со страницы PHP. Тем не менее, сама команда работает без ошибок, я проверил его с

<?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 была выполнена

кто-нибудь представление о том, что пошло не так?

+0

В вашем скрипте имеется относительный путь к файлу. Вы запускаете его из одного каталога в обоих случаях? –

+0

@ Jean-FrançoisFabre PHP-скрипт, выполняющий shell_exec, находится в другой папке, кроме ** post.sh ** файла. Я использую полный путь /var/....../post.sh файла в команде shell_exec. – TalG

+1

не уверен, но в этом случае файл 'javascript_100.file' был бы доступен из другого каталога? –

ответ

0

Это сделало трюк! Благодаря @ Jean-FrançoisFabre и небольшое изменение в его коде и проблема исчезла!

#!/bin/sh 

progdir=$(dirname $0) 

var1=`base64 $progdir/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 
Смежные вопросы