質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

845閲覧

XreaレンタルサーバーのCGIでシェルスクリプトを実行させたいが正常に動かない

m.s.2000

総合スコア32

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/03/04 22:38

実現したいこと

Xreaの無料レンタルサーバーのCGIで、シェルスクリプトからPHPでjsonファイルを保存させたい。

◆実現したいプロセス

①ChromeブラウザからCGI実行

②シェルスクリプト実行

③PHP実行

jsonファイル保存

発生している問題

特にエラーは表示されないが、jsonファイルが保存されない。

一部参考にしたサイト

http://crontab.blog.jp/archives/3602283.html

(最終的にはこのサイトのようにGASからCGIを動かしたいが、まずはブラウザでトライ中)

確認したこと

  1. CGIファイル、シェルスクリプトファイル、PHPファイルのパーミッションを全て755に設定した。

  2. CGIファイル実行を省略して、シェルスクリプトファイルを直接実行すると、正しくjsonファイル保存まで完了出来た。(CGIファイルに問題あり?)

  3. FTP転送する際、CGIファイルは転送モードをテキスト(アスキー)モードに設定して転送した。

  4. "さくらレンタルサーバー" でも同様のトライをしたが、こちらは全く問題なくjsonファイルが保存された。 Xreaレンタルサーバーの仕様を疑ったが、CGI可と記載があり、フルPathも記載されておりこれも反映済み。

①exc.cgiソースコード

perl

1#!/usr/local/bin/perl -- 2 3system ("/bin/sh /virtual/user_id/public_html/exc.sh"); 4 5print "Content-type: text/html\n\n";

②exc.shソースコード

sh

1/usr/local/bin/php /virtual/user_id/public_html/exc.php

③exc.phpソースコード

php

1<?php 2 3$xxx[0] = 'aaa'; 4 5$xxx_json = json_encode($xxx); 6 7$a = fopen(dirname(__FILE__).'/xxx_file.json', "w"); 8 9@fwrite($a, $xxx_json ); 10 11fclose($a); 12 13?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/03/04 22:41

直でPHP実行した場合はどうなのでしょう。
m.ts10806

2022/03/04 22:44

あとPerlで何も出力されてないようですが、何かしらprintを入れた場合表示されるのでしょうか。 サーバーのエラーログも確認してください。 (あと、自身が契約しているプランが利用可能かどうかは確認してください)
m.s.2000

2022/03/04 22:44

早速ありがとうございます。 直でPHP実行した場合も問題なくjsonファイル保存されます。
m.s.2000

2022/03/05 14:22

printで'OK'など適当なテキストを出力をすると素直にOKと出力されます。それ以外はなにも表示されません。 調べたところエラーログは見れないようです。
guest

回答2

0

ベストアンサー

参考にしてる情報を間違えてるから意味不明なことをしている。
GASから直接PHPを呼べばいいだけ。

投稿2022/03/05 01:03

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/03/05 01:08

確かに、CGI経由する理由が不明ですね。
m.s.2000

2022/03/05 14:24

御指摘のとおりCGI経由せずGASから直接PHPを実行させたところ問題なく実行出来ました。
guest

0

直接実行して問題ないなら、直接実行すれば良いと思います。
exc.cgiの中身を下記に書き換える。

#!/usr/local/bin/php Content-Type: text/plain OK <?php $xxx[0] = 'aaa'; 以下略

あと、#!/usr/local/bin/perl ----を付けていると言うことは、改行コードがCRLFのままでアップロードしているのしょうか?改行コードはLFにしましょう。

投稿2022/03/04 23:24

編集2022/03/05 03:09
otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.s.2000

2022/03/05 14:43

御指摘ありがとうございます。 -- は色々なトラブルシューティングサイトを参考にしている中で付けてました。 御指摘の通り改行コードをLFにすることを心がけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問