• ベストアンサー

Google API 短縮URLについて

http://logic.moo.jp/data/archives/781.html 上記のサイトを参考にレンタルサーバー上では無事短縮URLを取得できたのですが ローカルのApacheではなぜかNULLが返ってきてしまいます。 Apache/2.2.8 (Win32) PHP/5.2.6 json support enabled json version 1.2.1 cURL support enabled cURL Information libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

(null === $obj = json_decode($response = curl_exec($ch)) ↓ (null === $obj = json_decode($response = curl_exec($ch))) 括弧抜けてましたすみません

taro0714
質問者

お礼

括弧を入れたら教えていただいた構文で問題なく短縮URLが取得できました。 本当に助かりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#244856
noname#244856
回答No.1

function get_tiny_url($url = '') {  $ch = curl_init();  curl_setopt_array($ch, array(   CURLOPT_URL => 'https://www.googleapis.com/urlshortener/v1/url?key=xxx',   CURLOPT_POST => true,   CURLOPT_POSTFIELDS => json_encode(array('longUrl' => $url)),   CURLOPT_HTTPHEADER => array('Content-Type: application/json'),   CURLOPT_RETURNTRANSFER => true,   CURLOPT_SSL_VERIFYPEER => false,  ));  if (curl_errno($ch)) {   throw new RuntimeException(curl_error($ch));  }  if (null === $obj = json_decode($response = curl_exec($ch)) {   throw new RuntimeException('Failed on decoding: ' . $response);  }  if (!isset($obj->id)) {   throw new RuntimeException('The response does not contain ID: ' . $response);  }  return $obj->id; } とりあえずこれで原因が分かるかと

taro0714
質問者

補足

ご返信ありがとうございます。 今こちらで試してみたのですが、 if (null === $obj = json_decode($response = curl_exec($ch)) { throw new RuntimeException('Failed on decoding: ' . $response); } の部分で($response = curl_exec($ch))の後の '{' でunexpected というsyntax error が出てしまっています。 見た目の構文は問題なさそうなので何が問題なのか私の知識では分かりませんが、 どこか不備があれば再度教えていただけますでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPのCGIモードとについて

    PHPのCGIモードとについて PHPのCGIモードというのがよく分かりません。 自分はcentOSにソースコードからPHPを入れております。 で、主にApacheと連携させています。 ただ、最近は #!/usr/local/bin/php -q などを最初に書いてコマンドラインからの使用が多くなっております。 自分は ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-freetype-dir=/usr/local/lib --with-gd --with-mysqli=/usr/local/mysql5.5/bin/mysql_config --with-pdo-mysql=/usr/local/mysql5.5 --with-mysql-sock=/var/lib/mysql/mysql.sock --with-zlib --with-xsl=/usr/lib --enable-mbregex --enable-mbstring --enable-bcmath --with-mcrypt --disable-posix-threads --enable-bcmath --with-readline --with-curl=/usr/local/curl --with-curlwrappers --with-openssl --with-openssl-dir=/usr/lib64/openssl --enable-pcntl のようにしているのですが、これでCGIモードにはなっているのでしょうか? いまいち概念が掴めないでおります。 具体的な事例や、CGIモードでない場合との違いなどを教えていただけないでしょうか? また、CGIモードにするために何かphp.ini等で設定をするような事があるのであれば、 どのようにしてCGIモードとして使えるようになるのかをアドバイスいただきたいと思います。

    • ベストアンサー
    • PHP
  • Apache-PHP-fsockopenでSSL通信が出来ない。

    ----phpinfoの一部--- Apache/2.2.0 (Win32) DAV/2 mod_ssl/2.2.0 OpenSSL/0.9.8a mod_autoindex_color PHP/5.1.1 openssl OpenSSL support enabled OpenSSL Version OpenSSL 0.9.8a 11 Oct 2005 ------------------------- OpenSSL0.9.8aをインストール済みでコマンドプロンプトから実行可能な状態。パスも通しています。 -------------------------- <?php $fp=fsockopen("ssl://www.netsecurity.ne.jp",443); if (!$fp) { die("ERROR\n"); } /* 接続を終了 */ fclose($fp); ?> これを実行するとIEのステータスバー「https://xxxxxxxx/xampp/1.phpを開いています」と表示されたままになってしまいます。 SSLではない接続だと問題なく接続できます。 winXP xamppです。 「www.netsecurity.ne.jp」は適当にSSL通信できるサイトを見つけてテストしてみましたが…。 設定・テスト方法等、注意すべき点をご指摘いただきたく思います。

    • ベストアンサー
    • PHP
  • apacheのログファイルがいつの間にか消える

    Redhat Linux7.0J apache_1.3.19 openssl_0.9.6b apache_1.3.19+ssl_1.44の環境で 下記のログファイルの中身が、いつの間にか 全て消えてなくなるのです。  マシンを再起動すれば、たちまちログ出力は 開始されるのですが、また気付いたら消えています。  消えるまでにどれだけの日数がかかるのかは 分かりません。サーバの再起動は3ヶ月に1回ぐらいは 実施していますが、毎回logのことを調べてはいないので どのタイミングで消えたかは全く不明です。 定期的に消えるような処理が自動的に動いているのでしょうか?(それはcronという機能のことですか?cronの設定とかよく分からないのですが現状どのようなcronが動いているか確認する手段(コマンド)はありますか?) [ログファイルは、下記のように1ファイル/1Wずつ保存されていて気付いたら中身が消えている] /usr/local/apache/logs/httpsd_access_log ・・・ /usr/local/apache/logs/httpsd_access_log.4 /usr/local/apache/logs/httpsd_error_log ・・・ /usr/local/apache/logs/httpsd_error_log.4 ログのrotationについては /etc/logrotate.d/syslogファイルに 下記を記述しています。  この記述方法が悪いのでしょうか? インストールの初期状態で自動的に記述されていた maiilogファイルなどを真似して記述したのですが 間違いがありますか? [/etc/logrotate.d/syslogファイルの記述] /usr/local/apache/logs/httpsd_access_log { postrotate /bin/kill -HUP `cat /var/run/xinetd.pid 2>/dev/null` 2>/dev/null || true endscript } /usr/local/apache/logs/httpsd_error_log { postrotate /bin/kill -HUP `cat /var/run/xinetd.pid 2>/dev/null` 2>/dev/null || true endscript }

  • phpのConfigure Commandについて

    ocnのサーバーにphpをvinstallでインストールしたのですが ocn標準で用意されているのは、データベースへアクセスする言語としてのみ利用できる内容になっているようです。 その後のカスタマイズは可能なので、機能を増やしたいのです。 参考になるか分かりませんが、 phpinfo()で表示させると、configure commandの内容が ./configure' '--with-apxs=/usr/local/apache/bin/apxs' '--with-config-file-path=/usr/local/lib' '--disable-debug' '--enable-memory-limit' '--enable-zend-multibyte' '--with-regex=system' '--enable-mbstring=all' '--enable-mbregex' '--enable-dio' '--enable-calendar' '--enable-versioning' '--with-bz2=shared,/usr' '--enable-sockets=shared' '--with-pcre-regex=/usr/local' '--with-iconv=shared,/usr/local' '--with-gdbm=shared' '--with-db3=shared,/usr/local' '--with-gettext=/usr/local' '--with-curl=shared,/usr/local' '--with-openssl=shared,/usr' '--with-pgsql=shared,/usr/local' '--with-openssl=/usr' '--with-gd=shared' '--enable-gd-native-ttf=shared' '--with-freetype-dir=shared,/usr/local' '--with-ttf=shared,/usr/local' '--with-xpm-dir=/usr/X11R6' '--with-jpeg-dir=shared,/usr/local' '--with-png-dir=shared,/usr/local' '--with-t1lib=shared,/usr/local' '--with-zlib=/usr' こんな感じになっています。 この内容で分かりますか? どなたかご教授宜しくお願いいたします。

  • apacheでcgiが動きません

    apacheをインストールし設定を行っていますがCGIが動いてくれません。 具体的にはCGIのソースがそのまま表示されてしまいます。 ネットを調べてみても <Directory /home/ultra/public_html> Options +ExecCGI AddHandler cgi-script .cgi .pl </Directory> を追加すれば動くような事が書いてありますがこの設定では動いてくれないようです。 何か根本的に間違っていることをしているのでしょうか。 アパッチのバージョンは以下のとおりです。 Server version: Apache/2.4.3 (Unix) suexecで動かしたくsuexecの設定もしていますが、 ログにsuexecのログが生成されないのでその前の段階かと思うのですが・・。 エラーログなどは特に表示されません。cgiのソースが20xで返されているので 当たり前かもしれませんが .コンパイル前の /configreは以下のように設定しました。 ./configure --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex \ --enable-i18n \ --with-xml \ --with-mysql=/usr/local/mysql \ --with-pgsql=/usr/local/pgsql \ --enable-track-vars \ --enable-discard-path \ --with-gd \ --enable-gd-native-ttf \ --with-zlib-dir=/usr/local \ --with-pdflib=/usr/local \ --enable-shared-pdflib \ --enable-exif \ --disable-debug \ --enable-debug=no \ --enable-debugger=yes \ --enable-memory-limit=yes \ --enable-magic-quotes=yes \ --with-exec-dir=/usr/bin \ --without-system-regex \ --with-dbase=yes \ --enable-bcmath=yes \ --enable-ftp \ --enable-sockets \ --disable-posix-threads \ --enable-xsl \ --enable-xslt \ --with-xslt-sablot \ --with-xsl=/usr/local \ --with-dom=/usr/local \ --with-dom-xslt=/usr/local \ --enable-soap \ --enable-simplexml \ --with-gettext=/usr/local \ --enable-sqlite-utf8 \ --with-pdo-mysql=/usr/local/mysql \ --with-pdo-pgsql=/usr/local/pgsql \ --with-pdo-sqlite=/usr/local \ --with-curl=/usr/local/lib \ --with-openssl=/usr/local/openssl \ --with-mcrypt=/usr/local \ --with-iconv=/usr/local \ --with-xmlrpc \ --enable-safe-mode \ --enable-ssl \ --enable-dav \ --enable-so \ --enable-suexec \ --with-suexec-caller=apache \ --with-suexec-userdir=public_html \ --with-suexec-docroot=/home \ --with-suexec-logfile=/usr/local/apache2/logs/suexec_log \ --with-suexec-uidmin=500 \ --with-suexec-gidmin=100 ご回答よろしくお願いいたします

  • PHPの4.4.9と5.2.13の共存について。

    PHPの4.4.9と5.2.13の共存について。 OSはRHLE4で既存で動いているPHP4のプログラムがあります。 今回、開発してもらったPHP5のプログラムを同じサーバで動作させようと思っております。 既にPHP5.2.9が入っておりましたが、オプションでMySQLがなかったため、 PHP5をアンインストールして、ソースからコンパイルしてインストールしhttpdを再起動しました。 しかし、phpinfo()で確認したところ、PHPのVersionが5.2.9のまま変化ありません。 ソースからのインストールが初心者なもので大変申し訳御座いませんが、 PHP4と5の共存とソースからインストールした際のアンインストール方法を教えていただけますでしょうか? インストール方法は下記サイトを参考にPHP5バージョンで行ないました。 http://d.hatena.ne.jp/shogo0809/20100714/1279110673 ./configureオプションは下記です。 --prefix=/usr/local/php5 \ --with-config-file-path=/usr/local/php5/lib \ --with-sqlite \ --with-mysql=/usr/local/mysql5 \ --enable-sigchild \ --enable-mbstring \ --enable-mbregex \ --enable-force-cgi-redirect \ --enable-zend-multibyte \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-zlib \ --with-zlib-dir=/usr \ --with-openssl \ --enable-ftp \ --with-curl \ --with-pgsql=/var/lib/pgsql

    • ベストアンサー
    • PHP
  • livedoorの天気を出力したいのですが

    livedoorからjson形式で天気情報を取得し、 連想配列に格納して出力しようと考えています。 下記のエラーで困っております。 お手数ですが、ご教授いただけますと幸いです。 【livedoor天気】 http://weather.livedoor.com/weather_hacks/webservice ■環境:Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 ■weather.php <?php //livedoorからjsonで天気情報を取得 $url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=410020"; $json = file_get_contents($url,true); if ($json == false) { echo "JSONの戻り値がfalse。"; return; } $obj = json_decode($json); //取得したデータを連想配列に格納していく $weather = array( //今日の最高気温 "today_max" => $obj->forecasts[0]->temperature->max->celsius, //明後日の最低気温 "day_after_tomorrow_max_celsius" => $obj->forecasts[2]->temperature->max->celsius, //明後日の最低気温 "day_after_tomorrow_min" => $obj->forecasts[2]->temperature->min->celsius ); echo var_dump($obj); echo $weather['today_max'];//都市を変え最高気温がある場合だと19℃とか出力される echo $weather['today_max'];//最高気温がNULLだと下記エラーが出力される ?> ■weather.phpを実行時のエラー Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 19 (19行目は上記、今日の最高気温) Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 32 (32行目は上記、明後日の最高気温) Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 33 (33行目は上記、明後日の最高気温) --------------- 最高気温がnullだった場合でもエラーが出ないようにしたいです。 $obj=json_decode($json); $objは連想配列、$weatherに格納したいと考えてます。 自分で調べた結果、is_nullやemptyで回避とありましたが 解決には至りませんでした。 ■参考URL http://nanoappli.com/blog/archives/810 以上、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • POP3SへTLS1.2接続する方法

    SSL3.0の脆弱性を回避する目的で、POP3Sの接続をTLS接続に切り替えようと思っているのですが、エラーが発生し上手くいきません。 openssl ciphers -vで確認したところ、プロトコルがSSLv3とTLSv1.2しかないようで、 # openssl s_client -tls1_2 -connect localhost:995 -> ○ # openssl s_client -tls1_1 -connect localhost:995 -> × # openssl s_client -tls1 -connect localhost:995 -> × # openssl s_client -ssl3 -connect localhost:995 -> ○ # openssl s_client -ssl2 -connect localhost:995 -> × という結果となりました。 Windowsクライアントよりメールソフト(becky!)を利用し接続すると、接続に失敗し下記エラーがでます。 認証設定が「over TLS 1.0」でしたので、TLS1.0接続の為、上記テスト結果の-tls1と同じ状況なのかと思っています。 そこで、お知恵をお借りしたいのですが、 1. WindowsクライアントよりTLS1.2接続でpop3s接続できるメールソフトは存在するのでしょうか。 2. opensslの暗号化プロトコルにTLS1.0を追加する事は可能でしょうか。 お知恵をお持ちでしたらお助け頂けませんでしょうか。 宜しくお願い致します。 [エラー内容] qpopper[3102]: TLS handshake Error qpopper[3102]: TLS/SSL Handshake failed: -1 [qpopper.config] set clear-text-password = always set reverse-lookup = false set tls-support = alternate-port set tls-private-key-file = /usr/local/etc/apache22/ssl.key/server.key set tls-server-cert-file = /usr/local/etc/apache22/ssl.crt/server.crt set shy = true [環境] qpopper-4.1.0_3 OpenSSL 1.0.1e-freebsd FreeBSD 10R

  • Apache2にSSLを導入したら起動しなくなった

    apache2が立ち上がらなくて大変困っています。 httpのときは動作していましたがSSLを導入してhttps化したら立ち上がらなくなり解決方法もわかりません。 助けてください。 apache2を起動すると、 apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sun 2023-12-17 11:09:17 JST; 7min ago Docs: https://httpd.apache.org/docs/2.4/ Process: 6482 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE) 12月 17 11:09:17 raspberrypi3 systemd[1]: Starting The Apache HTTP Server... 12月 17 11:09:17 raspberrypi3 apachectl[6482]: Action 'start' failed. 12月 17 11:09:17 raspberrypi3 apachectl[6482]: The Apache error log may have more information. 12月 17 11:09:17 raspberrypi3 systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE 12月 17 11:09:17 raspberrypi3 systemd[1]: apache2.service: Failed with result 'exit-code'. 12月 17 11:09:17 raspberrypi3 systemd[1]: Failed to start The Apache HTTP Server. となるので、journalctl -xeすると、 -- The job identifier is 3687. 12月 17 11:09:17 raspberrypi3 apachectl[6482]: Action 'start' failed. 12月 17 11:09:17 raspberrypi3 apachectl[6482]: The Apache error log may have more information. 12月 17 11:09:17 raspberrypi3 systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE -- Subject: Unit process exited -- Defined-By: systemd -- Support: https://www.debian.org/support -- -- An ExecStart= process belonging to unit apache2.service has exited. -- -- The process' exit code is 'exited' and its exit status is 1. 12月 17 11:09:17 raspberrypi3 systemd[1]: apache2.service: Failed with result 'exit-code'. -- Subject: Unit failed -- Defined-By: systemd -- Support: https://www.debian.org/support -- -- The unit apache2.service has entered the 'failed' state with result 'exit-code'. 12月 17 11:09:17 raspberrypi3 systemd[1]: Failed to start The Apache HTTP Server. -- Subject: A start job for unit apache2.service has failed -- Defined-By: systemd -- Support: https://www.debian.org/support -- -- A start job for unit apache2.service has finished with a failure. -- -- The job identifier is 3687 and the job result is failed. と表示されます。

  • 短縮URLについて

    短縮URLはアフィリ報酬にならないものがあるという話を聞いて質問です。 以下のような短縮URLサイトを見つけたのですが、ここで作成した短縮URLでアフィリ報酬はちゃんと発生するでしょうか? http://p.tl/ またここでなくてもちゃんとアフィリ報酬が発生する無料の短縮URLサイトはありますか? どなたかご存知の方がおられましたら教えて下さい。