1. 程式人生 > >讓php.exe也能傳遞引數

讓php.exe也能傳遞引數

在專案中使用到windows的定時任務來執行php,但是發現配合ci,卻找不到方法來傳遞uri引數,手動$_SERVER["REQUEST_URI"]可以瀏覽器中正常執行.但是放到cmd下面的php.exe來執行時,卻發現引數在另一個數組中.簡單的方法就是改uri的獲取方式了.加上cmd的情況下的提取

-------------

在命令列中呼叫

>php.exe cmd.php

-------

cmd.php

雖然設定了


$_SERVER["REQUEST_URI"] = 'home/email/queue/' .$maxLetters. '/' .$sleep;

但是在cmd php.exe中除錯打印出$_SERVER,竟然無此引數,引數自動跑到argc的陣列下面去.

沒辦法只能改core中的程式碼了.

--------

<?php
$maxLetters = 10;//執行一次傳送件數
$sleep = 20; //如果相同dns暫停秒後再發送,可以設定0,然後啟用smtp中的間隔時間
$_SERVER["REQUEST_URI"] = 'home/email/queue/' .$maxLetters. '/' .$sleep;
phpinfo();
include('index.php');

----------

修改core/uri.php中的

增加

     empty($uri) && isset($_SERVER["argc"]) && (!empty($_SERVER["argc"]['REQUEST_URI'])) && ($uri = $_SERVER["argc"]['REQUEST_URI']);//qidizi增加,讓cmd php.exe也支援此引數


    /**
     * Get the URI String
     *
     * @access    private
     * @return    string
     */
    function _fetch_uri_string()
    {
        if (strtoupper($this->config->item('uri_protocol')) == 'AUTO')
        {
            // Is the request coming from the command line?
            if (defined('STDIN'))
            {
                $this->_set_uri_string($this->_parse_cli_args());
                return;
            }

            // Let's try the REQUEST_URI first, this will work in most situations
            if ($uri = $this->_detect_uri())
            {
                $this->_set_uri_string($uri);
                return;
            }

            // Is there a PATH_INFO variable?
            // Note: some servers seem to have trouble with getenv() so we'll test it two ways
            $path = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
            if (trim($path, '/') != '' && $path != "/".SELF)
            {
                $this->_set_uri_string($path);
                return;
            }

            // No PATH_INFO?... What about QUERY_STRING?
            $path =  (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
            if (trim($path, '/') != '')
            {
                $this->_set_uri_string($path);
                return;
            }

            // As a last ditch effort lets try using the $_GET array
            if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '')
            {
                $this->_set_uri_string(key($_GET));
                return;
            }

            // We've exhausted all our options...
            $this->uri_string = '';
            return;
        }

        $uri = strtoupper($this->config->item('uri_protocol'));

        if ($uri == 'REQUEST_URI')
        {
      $uri = $this->_detect_uri();
      empty($uri) && isset($_SERVER["argc"]) && (!empty($_SERVER["argc"]['REQUEST_URI'])) && ($uri = $_SERVER["argc"]['REQUEST_URI']);//qidizi增加,讓cmd php.exe也支援此引數
            $this->_set_uri_string($uri);
            return;
        }
        elseif ($uri == 'CLI')
        {
            $this->_set_uri_string($this->_parse_cli_args());
            return;
        }

        $path = (isset($_SERVER[$uri])) ? $_SERVER[$uri] : @getenv($uri);
        $this->_set_uri_string($path);
    }

相關推薦

php.exe傳遞引數

在專案中使用到windows的定時任務來執行php,但是發現配合ci,卻找不到方法來傳遞uri引數,手動$_SERVER["REQUEST_URI"]可以瀏覽器中正常執行.但是放到cmd下面的php.exe來執行時,卻發現引數在另一個數組中.簡單的方法就是改uri的獲取方式了.加上cmd的情況下的提取---

java啟動exe程式,傳遞引數和獲取引數

1、java中啟動exe程式 ,並新增傳參 String[] cmd = {"hh.exe","12315"}; Process process = null; try { ProcessBuilder pb =

WPF 利用Process.Start()方法啟動指定路徑下的exe檔案並傳遞引數

簡單來說就是實現一個程式A 開啟程式B,並且在開啟的時候傳遞一些引數給B,最後在B視窗上顯示出引數,這個小功能也是折騰了我半天。現在把我的過程整理記錄下來。 1.首先我們得有一個被呼叫的程式,新建一個簡單的WPF程式,命名為:argTest。裡面加一個label,用來顯示接

命令列執行PHP檔案時如何傳遞引數

Get,post,request可以接收到請求資料,如何在命令列執行php時,獲得傳遞到php指令碼的資料呢?在命令列下傳遞資料時已經沒有了Get和Post的概念,在指令碼內,使用$argc, $ar

shell呼叫php指令碼,並傳遞引數

命令列執行帶引數的php指令碼,並取得引數  發表於 2011-07-15 分類目錄: php 一,為什麼我們要在命令列下執行php指令碼呢? 個人理解,主要有二個原因: 1,利用crontab去跑php,可以給伺服器減壓,當然在這裡有一個條件,就是實時性要求

javascript呼叫exe程式(windows)傳遞引數

http://q.cnblogs.com/q/13371/<input type="button" value=" 登 錄 " onclick="exec('C:\\Activesoft\\ActiveMessenger\\AMsger.exe')"/>我的exe

你的PHP執行JS並獲得JS函式的返回值

關於這個功能,我找了很久了,是因為在做某個功能介面時,由於對方在請求資料前對請求的引數進行了加密,導致了無法通過程式模擬提交資料,因此需要想辦法提前處理這個引數然後再提交。 下面直接看實現過程: $jsData = file_get_conten

用免費自助建站,自己制作一個別人仰望的網站

自助建站 自己做網站 網站建設 網站制作 網站制作只是網站建設中的一步,網站制作完之後還要其他的維護工作。那麽,企業是如何通過凡科進行自助建站呢?怎樣才能建一個成功的站呢? 在網絡信息發達的今天,網上不乏各種建站教程和攻略,建站新手面對如此多樣的教程感到更迷惑了,各種方法都有各自的道理,

最強自定義PHP集成環境,系統缺失dll和vc正常運行

缺少 免費 alt 系統 演示 php環境 com 解決 解決方案 PHPWAMP支持iis、apache、nginx等web服務器,並全部支持php多版本同時運行,無限自定義mysql、php PHPWAMP支持32和64,支持自定義自動匹配系統所需dll和vc,純綠化無

什麽?php做爬蟲?

wrapper gem 如果 key pro jquery 計算器 discuss login php爬蟲代碼(爬去我的OJ題庫為例) <?php for ($i=1000;;$i++){ $url = "http://localhost/JudgeOnline/p

私服成為創意源泉?遊戲這個腦洞開的人驚訝

私服 創意 源泉 必須正視私服的危害。用數據說話會更加直觀。2010年新浪遊戲曾經采訪過武漢一個由私服起家、轉正做自研遊戲的遊戲人高翔,他給出了一個自己的切身感受:“私服中的玩家才是最忠誠的玩家,他們的ARPU值非常高。以常見的《傳奇》私服為例,多數都是超越了《傳奇》官服的,玩家月消費值差不多都在

織夢編輯文檔自動更新主頁和列表頁

每次 archive 時也 arch 主頁 有時 它的 找到 lin 織夢後臺只能開啟發布後更新主頁,列表,和上下頁。有時候我們需要在編輯時也能更新想要的,這樣不用每次去生成。 打開 /dede/archives_edit.php 找到 $wintitle 在它的上面加入

VirtualXposed,你無需Root使用Xposed框架!

ofo 高級 tac containe spa 性問題 常用 便是 span VirtualXposed 是基於VirtualApp 和 epic 在非ROOT環境下運行Xposed模塊的實現(支持5.0~8.1)。一直以來Xposed框架最大的入門難度就在於設備需要Roo

蘋果App,不用上傳蘋果商店,如何其他人安裝?

轉載自: https://www.oschina.net/question/2376332_237742 1 WeX5移動開發雲  2015/05/28 11:46 謝謝關注!挪到部落格裡去了。原文:http://my.oschina.net/wex5/blog/

mongoDB使用in查詢,提高查詢速度

mongoDB使用in查詢 在mongoDB查詢,是在springboot中使用的mongoDB,結合業務需求,需要查詢多個ID的記錄,改寫了mongoDB的查詢方法,讓其實現了像MySQL中in查詢

AppInventor不會程式設計的小白製作app

本帖最後由 gzftcoex 於 2010-10-16 06:51 編輯 本人小白一枚,程式設計啥的全不懂,更不用說這語言那語言的了,但是生命在於折騰,我也製作自己的app了 之前在CB看到google為了能讓更多的人給自己的Android裝置開發軟體,開發了AppInventor,讓不懂程式設計的人也可

PHP實現區塊鏈?

引言 什麼是區塊鏈?官方的解釋是:區塊鏈是一個分散式記賬系統,是藉用密碼學串接並保護其內容的串連交易記錄(又稱區塊)。每一個區塊包含了前一個區塊的加密雜湊、對應的時間戳記以及交易資料(通常用默克爾樹演算法計算的雜湊值表示),這樣的設計使得區塊內容具有難以被篡改的特性。用區塊鏈所串接的分散

你在ManjaroLinux下只用你喜歡的中文輸入法

讓你在ManjaroLinux下也能用你喜歡的中文輸入法 Linux下沒有中文輸入法,寫程式碼註釋是比較麻煩的事情 我被同學從UbuntuMATE拖入了ManjaroLinux的坑,作為一個有點基礎的萌新,我還是要把折騰出來比較正確的方法告訴大家,畢竟在網上看到的能完全節省就你大把時間的正確教程

2019春運搶票終極攻略,你躺著搶到票回家!

1.需要準備的東西 a.資料:一張銀行卡(擼15天伺服器使用),一個12306賬號,郵箱POP3/SMTP服務金鑰 b.伺服器:阿里,華為,騰訊,金山等等雲伺服器廠商都有15天新人免費一臺伺服器,大膽的擼吧!! c.軟體:分流 d.額外支出項:1-5元若快打碼充值或者20元支援分流作者,如果是隻搶自己

不用安裝Pycharm你的Python IDLE變得高大上

你的PythonIDLE還是這樣的介面麼? 那你就OUT了,現在的IDLE都是這樣的了 深邃的黑色背景還有強大的語法高亮,小編帶你感受心的Python,下面跟著小編一步一步走;本篇文章主要講解的是Windows系統下的,Linux下的會在後期文章中繼續發出 更多P