PHP CLI path, exec, safe_mode is off

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
Аватара пользователя
Dragon_Knight
Сообщения: 581
Зарегистрирован:
10 сен 2012, 02:43
Контактная информация:

Dragon_Knight » 26 май 2014, 18:33

Я даю такие советы, потому что этот вопрос равносилен вопросу: "Народ, я забыл как дышать, напомните плис.", ибо что бы это понять, особо умом блистать не нужно.

Что касается пустой строчки, в установщике я думаю стоит проверка на заполнение или того хуже поиск по указанному пути какого-то файла от PHP, и поэтому пустая строка не прокатит.
Аватара пользователя
Максим
Сообщения: 5385
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 26 май 2014, 18:35

Dragon_Knight писал(а):в установщике я думаю стоит проверка на заполнение или того хуже поиск по указанному пути какого-то файла от PHP, и поэтому пустая строка не прокатит.
Согласен, возможно и такое. Хреновый значит установщик :mrgreen:
CheF85
Сообщения: 8
Зарегистрирован:
19 май 2014, 10:10

CheF85 » 28 май 2014, 11:28

Пробовал определять путь и тем и другим способом, но покопавшись в коде модуля выяснил что написанная команда для exec не делает того что нужно:
function background(){
	// Load hwdMediaShare config
	$hwdms = hwdMediaShareFactory::getInstance();
	$config = $hwdms->getConfig();
	$result = false;
	// Delete test file is already exists
	jimport( 'joomla.filesystem.file' );
	$filename = JPATH_SITE.'/tmp/hwdms.background';
	if (JFile::exists($filename)) JFile::delete($filename);
	$cli = JPATH_SITE.'/administrator/components/com_hwdmediashare/cli.php';
	// Try to create test file in background
	if(substr(PHP_OS, 0, 3) != "WIN"){
		exec("env -i ".$config->get('path_php')." $cli test &>/dev/null &");
	}
	else{
			exec($config->get('path_php')." $cli test NUL");
	}
	// Sleep for 2 seconds
		usleep(1000000);
	// Check if file exists
	if (JFile::exists($filename)){
		JFile::delete($filename);
		$result = true;
	}  
Судя по коду, проверка будет пройдена только в том случае, если будет существовать файл, который создаётся (в моём случае, т.е. substr(PHP_OS, 0, 3) = "WIN" ), командой exec($config->get('path_php')." $cli test NUL"), где path_php и есть тот самый путь к php-cli, но судя по этой команде, файл она не создаёт :(
Так что прошу прощения за беспокойство.
Аватара пользователя
Максим
Сообщения: 5385
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 28 май 2014, 11:32

Строку exec($config->get('path_php')." $cli test NUL"); перепишите в
exec("php.exe $cli test NUL");
либо попробуйте указать во время установки такой путь к php:
php.exe
Ответить